Windows
文件夾和文件中的多個空格,用於通過 /bin/bash /bin/sh 進行 rsync 備份
由於公司拆分,需要一次性備份兩台舊的凌亂的 Windows XP 機器。使用 CentOS 6 x64 最小安裝,我安裝了一些通過 ntfs3g 在本地安裝的 MS Windows NTFS 硬碟驅動器,並通過 smb 在 LAN 上安裝。我需要自己記錄備份的內容,並認為沒有比使用 rsync 編寫腳本更好的方法了。
問題是幾乎所有 SOURCE 文件夾的名稱中都有空格。rsync 的手冊頁似乎表明它只支持多個源文件,而不是多個源文件夾。所以我認為“足夠簡單”,創建一個列表並將每個源文件夾一次一個地傳遞給 rsync。
腳本:
SOURCEWITHSPACES=( "${PREFIX}/'Documents\ and\ Settings'/. ${PREFIX}/'electronic\ claims'/. ${PREFIX}/'billing\ statements'/." ) for P in ${SOURCEWITHSPACES[@]}; do echo $P; done;
輸出:
/media/4EC75/'文件\ 和\ 設置'/. /媒體/4EC75/'電子\ 索賠'/。 /media/4EC75/'計費\ 聲明'/。
因此,當它被傳遞給 rsync 時,它不會辨識任何 SOURCE 文件夾。我不想 glob,因為它需要清楚地知道要備份的內容。我也嘗試用逗號和冒號分隔文件夾名稱,但這也不起作用。處理這個問題的可靠方法是什麼?切換到 perl 或 python?請不要告訴我使用 robocopy.exe,因為我已經使用了多年,發現它在不同版本的 windows 之間差異很大,它不太可靠。此外,我永遠不會回到 Windows。
TAG=spacesinfolderfilenames
shell 腳本應該是:
SOURCEWITHSPACES=( "${PREFIX}/Documents and Settings/." "${PREFIX}/electronic claims/." "${PREFIX}/billing statements/." ) for P in "${SOURCEWITHSPACES[@]}"; do echo "$P"; done