rsync 檔案名稱中帶有冒號

rsync 檔案名稱中帶有冒號

我有一個相當大的目錄,出於備份和便攜性的原因,我需要將其同步到外部硬碟。

/work

我嘗試運行以下 rsync 命令以便將此資料夾複製到我的外部硬碟:

rsync -avz /work /media/extern_drive --max-size '4G'

這似乎工作正常,除了它不複製任何帶有 a 的文件:

這篇文章給出了單一文件的解決方案: rsync:檔案名稱中的冒號,但問題是我有很多這些文件分散在不同的目錄中,我無法手動完成。

有沒有辦法遞歸地同步檔案名稱中帶有冒號的任何檔案?

答案1

我推測您的外部磁碟機使用 VFAT 等檔案系統,該系統不允許檔案名稱中包含冒號。

一個簡單的選擇是將檔案備份為存檔(zip7ztar.xz,無論您喜歡什麼)。這樣,除了最大檔案大小之外,您就不會受到檔案系統任何特徵的限制。

另一種可能性是使用rdiff 備份,它負責翻譯不適合目標檔案系統的檔案名,如建議經過池利

處理不支援的字元的通用方法是利用檔案系統層來轉換檔案名稱。這保險絲檔案系統波西紹夫爾將檔案名稱轉換為 Windows VFAT 支援的名稱。

mkdir ~/mnt
mount.posixovl -S /media/extern_drive ~/mnt
rsync -a /work ~/mnt
fusermount -u ~/mnt

當我在 USB 隨身碟上進行 rsync 時,如何替換冒號?了解更多詳細信息,並檢查該線程以獲取可能出現的任何新解決方案。

答案2

我會嘗試明確地包含名稱中帶有冒號的文件模式,如下所示:

$ rsync -avz --include '*:*' /work /media/extern_drive --max-size '4G'

例子

$ mkdir 1 2
$ touch 1/file{1..5}
$ touch 1/file:{1..5}
明確排除它們
$ rsync -avz --exclude '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5

sent 313 bytes  received 114 bytes  854.00 bytes/sec
total size is 0  speedup is 0.00
明確包括它們
$ rm -fr 2/*

$ rsync -avz --include '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
file:1
file:2
file:3
file:4
file:5

sent 573 bytes  received 209 bytes  1,564.00 bytes/sec
total size is 0  speedup is 0.00

相關內容