启用 --link-dest 时出现奇怪的 rsync 行为

启用 --link-dest 时出现奇怪的 rsync 行为

我目前正在使用rsync选项--link-dest将一些文件从 Win10 (WSL) 备份到 Debian 盒子。

我观察到奇怪的行为,硬链接在某些文件夹中可以正常工作,而在其他文件夹中则完全被忽略。

这是我的脚本:

#!/bin/bash

# set date
date='date +"%d-%m-%Y-%H:%M"'

# Source
source=/mnt/c/Users/user/Desktop/test/

# Partial destination
dest=/media/external/user/laptop/desktop/

# log into server and retrieve last updated folder
last=`ssh -p XXXX -i ~/key [email protected] 'cd '$dest'; ls -ct | head -n 1'`

# --link-dest from the last updated folder
link_dest=/media/external/user/laptop/desktop/$last

rsync -PaSh --mkpath --delete --link-dest=$link_dest --stats -e 'ssh -p XXXX -i ~/key' $source [email protected]:$dest`$date/`

--link-dest不一致的。包含三个 png 图像文件的小测试文件夹可以正常工作。

第一次运行时,所有文件都会完全传输。

后续运行将正确获取--link-dest且仅获取传输更改(如果有):

$ du -h --max-depth=1
304K    ./10-10-2021-12:46
4.0K    ./10-10-2021-12:51
4.0K    ./10-10-2021-12:47
4.0K    ./10-10-2021-12:49
320K    .

我在一个包含一些 Word 文件的小文件夹中也得到了相同的结果。

但是,对于其他文件夹,例如较大的文件夹、jpg 图像文件等,后续运行不会仅复制更改的文件,而是覆盖原始文件夹。

例如,原来的运行:

$ du -h --max-depth=1
756M    ./10-10-2021-22:04
756M    .

第二次运行:

$ du -h --max-depth=1
756M    ./10-10-2021-22:07
756M    .

仅有的我对脚本所做的更改是源文件夹:source=/mnt/c/Users/user/Desktop/XXX/.没有其他变化。

我无法解释为什么--link-dest在某些情况下有效而在其他情况下失败,以及这是否与文件类型或文件夹大小有关。

欢迎任何想法。

相关内容