由于公司拆分,需要一次性备份两台旧的、杂乱的 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/'文档\ 和\ 设置'/。 /媒体/4EC75/'电子\ 索赔'/。 /媒体/4EC75/'计费\ 声明'/。
因此,当将其传递给 rsync 时,它无法识别任何 SOURCE 文件夹。我不想使用 glob,因为它需要明确说明要备份的内容。我还尝试使用逗号和冒号分隔文件夹名称,但这也不起作用。处理此问题的可靠方法是什么?切换到 perl 还是 python?请不要告诉我使用 robocopy.exe,因为我已经使用它多年了,发现它在 Windows 版本之间差异很大,可靠性较低。此外,我永远不会再使用 Windows。
TAG=spacesinfolderfilenames
答案1
shell 脚本应该是:
SOURCEWITHSPACES=( "${PREFIX}/Documents and Settings/." "${PREFIX}/electronic claims/." "${PREFIX}/billing statements/." )
for P in "${SOURCEWITHSPACES[@]}";
do echo "$P";
done