我会定期运行一个 rsync 命令,该命令会从我的远程服务器下载新文件。
下载的文件存储在文件夹中,一旦我将它们下载到本地计算机,我可能会删除不再需要的文件夹(及其内容)。
当我再次运行我的 rsync 命令时,它将下载任何新文件夹以及我从本地计算机中删除的不想要的旧文件夹。
我想在 rsync 命令上做的是将文件夹名称存储在一个文件中(如下载的.log),然后在下次运行 rsync 时将其用作我的排除文件,这样它就不会再次下载这些文件夹。我认为只存储文件夹名称而不是文件夹和文件名会更有效,因为跳过文件夹你会跳过文件。
有人可以解释我如何让 rsync 命令输出文件夹名称吗?
当前的 RSYNC 命令:
rsync -avz --dry-run remote-host:downloads/ ~/Downloads/
使用
--exclude-from=FILE
并将不需要的目录放在此文件中。例如,如果您有一个目录测试,其中包含文件夹 a、b 和 c,并且您希望将其同步到文件夹 test2 但想要忽略文件夹 b 和 c,则需要创建如下文件:
然后运行命令
rsync -avz --exclude-from=ignore test/ test2/
编辑: 以适应您的命令
rsync -avz --dry-run --exclude-from=/path/to/ignore-file remote-host:downloads/ ~/Downloads/
并在文件 /path/to/ignore-file 中列出下载文件夹中远程主机上的内容,如下所示。
edit2:
要使其自动化,您可以创建这样的脚本
然后像这样运行它
rsync -avz --dry-run --exclude-from=/path/to/ignore-file remote-host:downloads/ ~/Downloads/ && bash /home/youruser/scripts/add-to-ignore.sh
那应该可以解决问题,并且列表将保留旧目录。
您还可以使用 --log-file 和 --log-file-format 将刚刚复制的内容记录到文件中,然后使用脚本删除行的开头,这样您就可以将此文件用作--排除-从。