我需要创建一个脚本,定期(每 5 秒)在两个目录之间执行 rsync。
一个要求是我需要将复制的文件连同时间戳一起写入日志文件,但我找不到办法结果复制的rsync
文件。有没有办法知道哪些文件已被复制?
答案1
您可以使用-v
(--verbose
)选项来rsync
获取正在复制的文件。
要得到具体的输出,rsync
有--info
选项。
例如,仅获取应该复制的文件,显示成功/不成功:
rsync --info=name /source /destination
仅获取传输统计数据:
rsync --info=stat /source /destination
您也可以在选项值中使用大写字母(例如),并在选项值后面--info=NAME
附加以增加详细程度(如果可能)(例如)。2
--info=NAME2
还有许多其他可能性,请检查man rsync
,尤其是rsync --info=help
:
% rsync --info=help
Use OPT or OPT1 for level 1 output, OPT2 for level 2, etc.; OPT0 silences.
BACKUP Mention files backed up
COPY Mention files copied locally on the receiving side
DEL Mention deletions on the receiving side
FLIST Mention file-list receiving/sending (levels 1-2)
MISC Mention miscellaneous information (levels 1-2)
MOUNT Mention mounts that were found or skipped
NAME Mention 1) updated file/dir names, 2) unchanged names
PROGRESS Mention 1) per-file progress or 2) total transfer progress
REMOVE Mention files removed on the sending side
SKIP Mention files that are skipped due to options used
STATS Mention statistics at end of run (levels 1-3)
SYMSAFE Mention symlinks that are unsafe
ALL Set all --info options (e.g. all4)
NONE Silence all --info options (same as all0)
HELP Output this help message
Options added for each increase in verbose level:
1) COPY,DEL,FLIST,MISC,NAME,STATS,SYMSAFE
2) BACKUP,MISC2,MOUNT,NAME2,REMOVE,SKIP
例子:
% rsync --info=name test.txt foobar:/spamegg/
test.txt
% rsync --info=stats test.txt foobar:/spamegg/
sent 86 bytes received 41 bytes 254.00 bytes/sec
total size is 10 speedup is 0.08
答案2
-v
除了您需要的其他标志之外,还可以使用该标志。
-v,--详细
此选项会增加传输过程中提供的信息量。默认情况下,rsync 会默默工作。单个-v将向您提供有关正在传输的文件的信息,并在最后提供简短摘要。两个-v选项将为您提供有关跳过哪些文件的信息,并在最后提供更多信息......
答案3
以防有人需要它...经过多次测试后,我打算做类似的事情:
#!/bin/bash
rm out.log
touch out.log
while :
do
rsync --log-file=out.log -a /tmp/test /tmp/backup
counter=`wc -l < out.log`
echo $counter
rm out.log
if [[ $counter -gt 2 ]]; then
rsync --log-file=out.log -a /tmp/test /tmp/backup
fi
sleep 5
done