“rsync” 的结果

“rsync” 的结果

我需要创建一个脚本,定期(每 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除了您需要的其他标志之外,还可以使用该标志。

man rsync

-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

相关内容