Rsync

rsync 排除 AppData 但包含 Firefox 書籤?

  • July 17, 2020

我想使用 cygwin 和 rsync 備份我的 Windows 主目錄:

rsync.exe -vrt --delete --exclude=AppData "/cygdrive/C/Users/user1/" "/cygdrive/D/backup/"

如您所見,我排除了AppData目錄。

是否可以在以下路徑中包含我的 Firefox 書籤?

AppData/Roaming/Mozilla/Firefox/Profiles/*/places.sqlite

星號代表配置文件名稱。不知道是因為 Firefox 在那裡生成隨機名稱。

也許可以使用帶有–exclude-from 的排除腳本?

我知道可以使用 power shell 將places.sqlite複製到另一個文件夾,然備份份這個文件夾。

但也許直接使用 rsync 是可能的。

這幾乎是rsync 的副本:使用過濾器排除頂級目錄但包括其一些子目錄

您需要包含AppData用於搜尋的文件夾樹,您可以找到places.sqlite,但排除除該文件之外的所有內容。

rsync --dry-run -av --prune-empty-dirs \
   --include '/AppData/Roaming/Mozilla/Firefox/Profiles/*/places.sqlite' \
   --include '*/' \
   --exclude '/AppData/***' \
   '/cygdrive/C/Users/user1/' '/cygdrive/D/backup/'

--prune-empty-dirs停止目標被填充的目錄,否則這些目錄將保持為空,因此只rsync創建它需要保存它正在複製的文件的目錄。(有點奇怪,這不是預設操作,但事實並非如此。)

在我的系統上,places.sqlite是在Profiles/*而不是Profile/*所以我相應地調整了我建議的命令。如您所料,--dry-run當您對結果滿意時刪除。

這是創建符號連結的另一個決定:將 places.sqlite 移動到 rsync 包含範圍中的某個位置,例如 c:\places*\places.sqlite

mklink c:\places\*\places.sqlite AppData\Roaming\Mozilla\Firefox\Profile\*\places.sqlite

甚至對於目錄,語法:

mklink /d <Link> <Target>

結果,rsync 將複製所有需要的數據,並跳過其他數據。

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