由于公司拆分,需要对两台旧式凌乱的Windows XP机器进行一次性备份。 使用CentOS 6 x64最小安装,我安装了一些MS Windows NTFS硬盘,通过ntfs3g在本地安装,并通过局域网通过smb安装。 我需要自己logging备份的内容,并认为没有比使用rsync完成所有脚本更好的方法。
问题是几乎所有的SOURCE文件夹名称中都有空格。 rsync的手册页似乎表明它只支持多个源文件 ,而不是多个源文件夹 。 所以我认为“足够简单”,创build一个列表,并将每个源文件夹一次一个地传递给rsync。
脚本:
SOURCEWITHSPACES=( "${PREFIX}/'Documents\ and\ Settings'/. ${PREFIX}/'electronic\ claims'/. ${PREFIX}/'billing\ statements'/." ) for P in ${SOURCEWITHSPACES[@]}; do echo $P; done;
OUTPUT:
/媒体/ 4EC75 /“文件\ 和\ 设置/。 /媒体/ 4EC75 /'电子\ 权利要求书/。 /媒体/ 4EC75 /'计费\ 声明/。
所以当它传递给rsync时,它不能识别任何SOURCE文件夹。 我不想整理,因为它需要清楚地确定要备份的内容。 我也尝试逗号和冒号分隔文件夹名称,但是也没有工作。 什么是可靠的方式来处理这个? 切换到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