use*_*501 2 linux backup samba rsync truenas
--dry-run
rsync 命令的选项有什么作用?在我当前工作的网络上,它似乎产生了一个很长的文件列表,这不是很有用。
以下是一些进一步的细节:
我最近(终于)开始在 TrueNAS 机器上部署 samba 共享。它必须是 samba,因为我同时使用 Linux、Windows,有时还使用 OS X 系统,因此我需要一个网络存储位置,如果需要,我可以从所有这三个系统中使用它。
我现在正在努力将数据从随机的硬盘阵列移动到 TrueNAS 系统上的存储池。我发现执行此操作的最简单方法是在 TrueNAS 系统上使用 rsync 服务器,并在客户端上使用 rsync 发送数据。
我从中复制数据的某些驱动器具有相同目录名称的多个副本。但我不能保证它们是相同的,因为其中一些是后来制作的。
警告:我不能依赖文件的时间戳。原因:在开始此数据迁移之前,我将大量内容移至单个磁盘。
示例:我有一个 3TB 驱动器的磁盘,其中包含以下内容
Documents-backup/...
Documents-backup_2/... # same directory structure as Documents-backup,
# may or may not be identical
Run Code Online (Sandbox Code Playgroud)
然后另一个驱动器包含
Documents-backup/... # may or may not be identical to dir on another disk
Run Code Online (Sandbox Code Playgroud)
其中一些文件夹的大小很大,内容超过 100 GB。
我想做的就是使用 rsync 来:
我认为以下命令可以做到这一点:
rsync -a -c --progress --dry-run ./local-path user@ipaddress::rsyncservername/remote-path
Run Code Online (Sandbox Code Playgroud)
然而,据我所知,这一切都是在打印所有正在检查的文件的列表,而不是具有不同校验和的文件。
我通过搜索发现了这个问题rsync dry-run
。这个问题提到了不同的权限。由于我使用的是存档开关-a
,我认为这保留了权限。我的猜测是 samba 不支持 Linux 权限,这导致 rsync 认为文件之间存在“差异”,尽管校验和相同。
备份 Linux 主文件夹时 rsync 空运行中的更改的更有意义的回顾
所以我的问题稍微狭窄一些,但本质上还是一样的。考虑到我所拥有的限制(服务器必须是 samba),我如何执行 rsync 来使用校验和检查文件之间的任何差异?
\n\nrsync 命令的 --dry-run 选项有什么作用?
\n
正是man rsync
所说的那样,
\n\n这使得 rsync 执行试运行,不会进行任何更改(并产生与实际运行基本相同的输出)。它最常与
\n-v
,--verbose
和/或-i
,--itemize-changes
选项结合使用,以查看 rsync 命令在实际运行之前将要执行的操作。
您建议的命令将运行非常非常慢,因为它必须禁用其优化的重要部分,而是对每个文件进行校验和。我注意到您警告您之前省略了时间戳,实际上您应该使用校验和来验证初始数据。复制时间戳后,您应该从将来的同步运行中删除-c
( --checksum
) 标志。
您可能需要的是--itemize-changes
( -i
) 标志,以显示每个文件需要更改的内容。--dry-run
( )标志-n
将报告每个文件需要更改 - 即使唯一需要更改的部分是文件修改时间等元数据。您可能还需要考虑--delete
识别应从目标中删除的文件,因为它们不再位于源中。
考虑这个示例场景
\ndate >origfile # Original file\nsleep 65\ncp origfile copyfile # Same content, different timestamp\ncp -p origfile samefile # Same content, same timestamp\ndate >difffile # Different content, different timestamp\n\nls -l ????file\n-rw-r--r-- 1 roaima roaima 29 May 21 17:03 copyfile\n-rw-r--r-- 1 roaima roaima 29 May 21 17:03 difffile\n-rw-r--r-- 1 roaima roaima 29 May 21 17:01 origfile\n-rw-r--r-- 1 roaima roaima 29 May 21 17:01 samefile\n\n# Only use --no-whole-file for this scenario. DO NOT use it in production code\nfor file in {copy,diff,same}file\ndo\n echo "== $file =="\n rsync --dry-run -ai --delete --no-whole-file --checksum origfile "$file"\n echo\ndone\n
Run Code Online (Sandbox Code Playgroud)\n输出(分阶段)
\ncopyfile
需要更新(时间戳)
== copyfile ==\n >f..t...... origfile\n
Run Code Online (Sandbox Code Playgroud)\ndifffile
需要更新(内容和时间戳)
== difffile ==\n >fc.t...... origfile\n
Run Code Online (Sandbox Code Playgroud)\nsamefile
不需要更新(没有输出rsync
)
== samefile ==\n
Run Code Online (Sandbox Code Playgroud)\n 归档时间: |
|
查看次数: |
20020 次 |
最近记录: |