rsync-仅报告上传的文件


14

我对rsync遇到了问题:要么显示我正在同步的目录中的所有文件(如果使用flag -v),要么什么都不显示(当不使用时-v)。

除了实际必须上传到远端的文件,我想让rsync保持安静。是否有标记来激活这种报告?我在文档中找不到这个

Answers:


11

是的,请检查-i标志。它以加密格式给出每个操作的报告。有关格式的确切定义,请参见手册页。

为了获取发送到远程主机的文件列表,可以使用以下命令:

rsync <options> -i <src> <dst> | grep '^<' | awk '{ print $2 }'

1
这将再次报告所有文件,而不是已更改的文件。
dangonfast 2012年

@gonvaled否,仅输出发送到远程主机的文件(如<fcstpoguax filename,其中不同的标志显示了为什么需要更新它们)。如果报告所有文件,则说明您的测试或环境可能存在问题。
奥利弗(Oliver)

我想你是对的。我看过联机帮助页,正如您所说的那样。但是我的系统正在报告所有文件。远端可能有问题...
dangonfast 2012年

嗯 越来越近:报告字符串是(对于所有文件)<f..T......。根据手册,这与时间戳有关。
dangonfast 2012年

1
使用grep -E '^[^.]|^$'还会使统计信息(或警告,错误等)线通过,仅删除以点开头的无聊的线...
Frank Nocke 17/02/26

9

rsync与单个-v实际上只打印传输的文件。如果您每次都获取完整列表,则可能意味着基于修改时间+大小的默认rsync src / dest比较算法不适合您的情况。您可以添加-c--checksum)标志,使rsync通过校验和比较文件。请注意,这显然会产生一些I / O开销。

稍微相关的一个事实是,如果您使用--info=flist而不是,-v则将获得更修剪的文件输出(基本上可以跳过典型-v输出的页眉和页脚)。


1
--info=flist仅在rsync> = 3.1中可用,并非在所有地方都可用。例如,macOS随

1
尽管Apple GPL谣言非常多汁,但请记住,Enterprise Linux具有广泛的支持范围(14年),在该范围内版本被锁定(并分支)以保留认证并在发行版支持的整个生命期内保证兼容性(api + abi)。 。实际上,这是唯一可行的方法,其副作用是,版本号看起来陈旧,新功能在很长一段时间内都不会对企业产生影响。
user2066657 '18

2

我想到的一件事是使用更详细的日志格式并了解要获取的内容。

例如:

rsync -a --out-format="%b  %i %f" /etc/ /tmp/qq/ |awk '{if ($1>0) {print $3}}'

这不是很可靠,它不能很好地处理带有空格的文件名。


1

1.使用-i选项

对于这些图标化(或:隐秘)的更改标志。您的输出将如下所示:

*deleting   DSC00012 (copy).JPG
.d..tp..... ./
.f...p..... DSC00011.JPG
>f+++++++++ DSC00012 (copy2).JPG
>f.stp..... DSC00012.JPG
.f...p..... DSC00014.JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
... more statistic stuff
sent 636.01K bytes  received 4.63K bytes  1.28M bytes/sec
total size is 2.84M  speedup is 4.44

2. grep每行以点开头。

让所有其他行(为了清晰起见,也为空白行)通过:

rsync -arz -i --stats -h ... /mnt/FooDrive/ /mnt/backup  | grep -E '^[^.]|^$'

我们在这里:-) —医生命令的是:

*deleting   DSC00012 (copy2).JPG
>f.stp..... DSC00011.JPG
>f+++++++++ DSC00012 (copy).JPG

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 1 (reg: 1)
...

避免点而不是寻找不仅 >可以让统计信息通过,而且还可以传递潜在的错误,警告等信息。

最终将统计数据作为个人喜好。-h --stats如果您不喜欢这些,请不要使用。我认为您的主要兴趣是看不到成百上千的未更改文件滚动...


0

我不认为有这样做的标志,但现在可能会有。这是我的方法:

rsync -vv [other options] | grep -v 'uptodate'

1
我的rsync(版本3.0.7)未添加uptodate到报告中,因此无法将其过滤掉。
dangonfast 2012年

我想纠正或至少弄清楚Mike在上面发布的内容以及@ jeckyll2hide指出的内容。我认为问题不是rsync -v不再发出字符串“ uptodate”,而是您需要使用rsync -vv。请注意这两个vs.我刚刚验证了它在rsync版本3.1.0的Ubuntu 14.04上可以工作。迈克,您能更新您的帖子以反映这一点吗?
John Mark Mitchell
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.