如何使 rsync 记录已删除的文件

如何使 rsync 记录已删除的文件

我正在使用 rsnapshot(使用 rsync)将文件从我的网络服务器备份到本地 Linux 盒子 (Synology)

正如预期的那样,在 Web 服务器上删除的文件也会在 Linux 机器上删除。问题是,有关已删除文件的信息未记录。如何将已删除文件的列表添加到 rsync 日志中?

以下是 rsnapshot.conf 中的 rsync 参数:

rsync_short_args -av
rsync_long_args --out-format="%t %f %b" --delete --delete-excluded \
    --log-file=/volume1/web/logs/rsn_sync.log --copy-links

所以这会产生以下命令:

/usr/syno/bin/rsync -av --out-format="%t %i %f %b" --delete --delete-excluded \

    --log-file=/volume1/web/logs/rsn_sync.log --copy-links \
    --exclude-from=/volume1/web/BK/exclude.txt --rsh=/usr/syno/bin/ssh \
    --link-dest=/volume1/web/BK2/weekly.1/slavikF/ \
    [email protected]:/var/www/ /volume1/web/BK2/weekly.0/slavikF/

答案1

-i, --itemize-changes      output a change-summary for all updates
Also:  -v, --verbose              increase verbosity

答案2

这是一个老问题,但答案如下:

当在单个系统上使用时,rsync 会启动两个进程:一次被视为“本地”(并从源目录发送数据),一次被视为“远程”(接收数据)。

删除是在远程端处理的,而不是本地端。

默认日志由“本地”进程创建,不显示已删除的文件:

$ rsync -a --delete-during --log-file=~/rsynclog.log src/ dest
$ cat ~/rsynclog.log
2021/05/05 23:51:09 [4244] building file list
2021/05/05 23:51:09 [4244] .d..t...... {directory}

但是,您可以使“远程”端创建日志。然后就出现删除了!

$ rsync -a --delete-during --remote-option=--log-file=~/rsynclog.log src/ dest
$ cat ~/rsynclog.log
2021/05/05 23:39:18 [31138] receiving file list
2021/05/05 23:39:18 [31138] *deleting   {directory}/{filename}
2021/05/05 23:39:18 [31138] .d..t...... {directory}

答案3

文档说默认--log-file-format使用。%i %n%L

你可以%o在这里使用。这文档说:

%o 操作,即“send”、“recv”或“del”。 (后者包括尾随期间)

所以,你基本上要寻找的是:

--log-file-format='%i %n%L %o' 

相关内容