我正在使用 Ubuntu 15.10。我注意到一个奇怪的问题。
当rsync使用--exclude={}选项运行嵌入在 shell 脚本中的命令(以 root 身份)时,rsync工作并排除路径,因为当我以 root 身份启动它时
./rBackup.sh
Run Code Online (Sandbox Code Playgroud)
但是,当我通过 root 运行它时
sh rBackup.sh
Run Code Online (Sandbox Code Playgroud)
exclude 目录选项不会延续,并且在备份它正在备份的驱动器时无限循环 in /media/。为什么?
编辑 - 这不是 sh / bash 差异 - 或者不应该。我有 #!/bin/bash 作为第一行,所以当通过“sh *.sh”运行时,它应该使用 bash 解释器 - 至少在理论上。
脚本如下:
#!/bin/bash
StandbyMount="/media/astump/sdb2"
mount /dev/sdb2 $StandbyMount
rsync -aAXv --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/etc/fstab,/boot/grub/grub.cfg} --delete-before / $StandbyMount
umount $StandbyMount
rm -fr $StandbyMount
Run Code Online (Sandbox Code Playgroud)