我在教程中读到我可以使用以下命令对我的CENTOS系统进行完整备份:
tar cvpzf /backups/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backups --exclude=/dev --exclude=/sys --exclude=/boot/grub --exclude=/etc/fstab --exclude=/etc/sysconfig/network-scripts/ --exclude=/etc/udev/rules.d/70-persistent-net.rules /
在命令行中,这对我很有用。我测试了它,恢复进展顺利。我希望能够每晚自动发生这种情况,但是当我尝试在bash脚本中执行此操作时,它会给我一些错误消息。我知道如何创建一个cron作业来执行shell脚本,但是这段代码无法进行备份:
#!/bin/bash
#Generic Server Backup With tar
SERVER=`uname -n`
echo "Starting backup for $SERVER..."
tar cvpzf /home/backups/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backups --exclude=/dev --exclude=/sys --exclude=/boot/grub --exclude=/etc/fstab --exclude=/etc/sysconfig/network-scripts/ --exclude=/etc/udev/rules.d/70-persistent-net.rules /
echo "Done."
那里的任何人都知道我做错了什么或者我怎么解决它?
错误消息:
sh bu.sh
...rting backup for juice.myserver.com
tar: Removing leading `/' from member names
tar: /\r: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
Done.
答案 0 :(得分:2)
似乎是一些与tar命令末尾的CR(回车)相关的问题。
排除后有一个单独的斜杠(/),这显然是要备份的路径。问题是tar认为它是/ \ r并且它显然不存在。
建议尝试使用某些实用程序(如dos2unix
)或使用某个命令tr -d '\r' < bu.sh > newbu.sh
来删除它。
之后,它应该可以正常工作。