Rsync

如何在 rsync/rsnapshot 中排除符號連結

  • June 20, 2017

rsnapshot用來管理我的備份。該文件/home/foo/bar是一個文件夾的符號連結,我想排除它。該--exclude選項不起作用,因為如果模式以 a 結尾,/那麼它將僅匹配目錄,而不是符號連結。

我怎麼能這樣做?

rsync手冊頁說:

如果模式以 a 結尾,/那麼它將只匹配目錄,而不是正常文件、符號連結或設備。

所以我要問的是:如何從rsnapshot文件夾的符號連結中排除?

如果連結是/home/foo/bar,那麼以下哪個配置行是正確的?

exclude /home/foo/bar/

exclude /home/foo/bar

exclude /home/foo/bar**

exclude /home/foo/bar***

這是我現在使用的配置文件:

config_version  1.2
snapshot_root   /media/satellite/rsnapshot/

cmd_cp      /bin/cp
cmd_rm      /bin/rm
cmd_rsync   /usr/bin/rsync
cmd_logger  /usr/bin/logger

retain      hourly  6
retain      daily   7
retain      weekly  4

verbose     2
loglevel    3

lockfile    /var/run/rsnapshot.pid

exclude /home/roberto/media/
exclude /home/roberto/media
exclude /home/roberto/media**
exclude /home/roberto/media***

backup  /home/      localhost/
backup  /etc/       localhost/
backup  /usr/local/ localhost/
backup  /var/www/   localhost/

/home/roberto/media符號連結在哪裡/media,這是一個目錄

除非您在配置文件中設置rsync_short_args或,否則您將使用它來執行複制。rsync_long_args``rsnapshot``rsync -a

的預設操作rsync -a是將符號連結複製為符號連結,並忽略符號連結的目標。(顯然,如果符號連結的目標在您的源文件樹中,它將被複製,但這是因為它的位置而不是因為它是包含符號連結的目標。)

如果要排除符號連結本身,只需在exclude一行中引用它:

exclude /foo/bar

我沒有包括前導/home,因為那是原始碼樹的根,過濾器總是基於源的根。

引用自:https://unix.stackexchange.com/questions/371461