由于公司拆分,需要对两台旧的、凌乱的 Windows XP 机器进行一次性备份。使用 CentOS 6 x64 最小安装,我安装了一些 MS Windows NTFS 硬盘驱动器,这些硬盘驱动器通过 ntfs3g 在本地安装,并通过 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/'文档\ 和\ 设置'/。 /media/4EC75/'电子\ 索赔'/。 /media/4EC75/'计费\ 声明'/。
因此,当它传递给 rsync 时,它无法识别任何 SOURCE 文件夹。我不想 glob,因为它需要明确明确要备份的内容。我还尝试用逗号和冒号分隔文件夹名称,但这也不起作用。处理这个问题的可靠方法是什么?切换到 perl 还是 python?请不要告诉我使用 robocopy.exe,因为我已经使用它多年,并且发现它在 Windows 版本之间差异很大,因此不太可靠。此外,我永远不会回到 Windows。
TAG=spacesin文件夹文件名
shell脚本应该是: