Rsync

rsync 具有模式匹配的特定子目錄

  • August 1, 2020

我正在嘗試使用 rsync 複製一組特定的子目錄來備份它們。我的目錄結構如下所示:

/path/to/data/foo1
/path/to/data/foo2
/path/to/data/bar1
/path/to/data/bar2

我只想複製“foo”文件夾,忽略“bar”文件夾。

我還想忽略這些文件夾中的任何 .zip 文件。

我在 rsync 中嘗試了許多參數組合,但無法讓它完全按照我的意願進行。

我可以使用兩個命令進行傳輸:

rsync --dry-run -a --human-readable --stats --progress --exclude"*.zip" "/path/to/data/foo1" "/mnt/backup/drive/"
rsync --dry-run -a --human-readable --stats --progress --exclude"*.zip" "/path/to/data/foo2" "/mnt/backup/drive"

在別處閱讀表格,我希望這樣的事情能奏效

rsync --dry-run -a --human-readable --stats --progress --include="data/foo*" --exclude="*.zip" --exclude="*" "/path/to/data" "/mnt/backup/drive"

但這似乎也擷取了“欄”文件夾。

–include 和 –exclude 參數的順序讓我感到困惑。因為需要在 –include 參數中指定“數據”文件夾不是我所期望的功能。

我缺少的明顯標誌是什麼!

感謝您的輸入。

以這種方式執行 rsync 對您有用:

rsync --dry-run -av --human-readable --stats --progress --exclude="*.zip" /path/to/data/foo* /path/to/copy/to/

也許您想以這種方式縮短命令:

rsync  -avhn --stats --progress --exclude="*.zip" /path/to/data/foo* /path/to/copy/to/

引用man rsync

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-v, --verbose               increase verbosity

-h, --human-readable        output numbers in a human-readable format

-n, --dry-run               perform a trial run with no changes made

當你準備好執行命令時-n

也可以使用此參數保存日誌文件:

--log-file=

所以上面的 rsync 命令會變成:

rsync  -avhn --stats --progress --exclude="*.zip" --log-file=logfile.log /path/to/data/foo* /path/to/copy/to/

日誌文件將寫入執行命令的同一目錄中,如果需要將其保存在其他位置,則必須使用絕對路徑。例如:

--log-file=/path/to/logfile

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