我在本地和服务器上都有一个文件。我首先尝试rsync
在“dry-run”模式下运行,看看文件之间是否存在一些差异:
$ rsync -aP --dry-run USER@192.168.0.55:/home/dir .
USER@192.168.0.55's password:
receiving incremental file list
dir/myfile.txt
Run Code Online (Sandbox Code Playgroud)
这显然意味着该文件dir/myfile.txt
不同,因为它将被更新。然后我用以下命令检查相同的文件diff
:
$ ssh USER@192.168.0.55 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt
USER@192.168.0.55's password:
Files - and dir/myfile.txt are identical
Run Code Online (Sandbox Code Playgroud)
因此,显然这些文件是相同的。
为什么rsync
要更新这个文件 - 我如何从命令行确认原因?
rsync
将报告更改
@roaima 在评论中指出,在rsync 手册页中有一个选项可以给出这些更改的摘要:
-i, --itemize-changes output a change-summary for all updates
Run Code Online (Sandbox Code Playgroud)
您可能会发现它很有用,尽管摘要很简洁并且(在我手头的版本中)仅报告类型(文件、链接或目录)和名称。以下是我在 Debian 7 和测试机器上使用 rsync 3.0.9-4 和 3.1.1-3 看到的情况:
cd+++++++++ backup-invisible-island/
>f+++++++++ backup-invisible-island/.bash_history
cL+++++++++ backup-invisible-island/conf -> ../system/invisible-island.net/conf
cL+++++++++ backup-invisible-island/statistics -> ../system/invisible-island.net/statistics
cd+++++++++ backup-invisible-island/anon_ftp/
cL+++++++++ backup-invisible-island/anon_ftp/AdaCurses -> pub/AdaCurses
cL+++++++++ backup-invisible-island/anon_ftp/DEBS -> pub/DEBS
cL+++++++++ backup-invisible-island/anon_ftp/GIT -> pub/GIT
Run Code Online (Sandbox Code Playgroud)
对于我自己的使用而言,目录时间戳的更改相对不重要。我使用的脚本仅显示已更改的文件: