Windows

文件夾和文件中的多個空格,用於通過 /bin/bash /bin/sh 進行 rsync 備份

  • May 4, 2013

由於公司拆分,需要一次性備份兩台舊的凌亂的 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

引用自:https://serverfault.com/questions/505047