我要对整个Solaris系统进行tar操作。因此我写了一个脚本。当我以root身份运行此脚本时,一切正常!当我从cron运行相同的脚本时,我得到了一个
tar: - exclude-from =:没有这样的文件或目录
或
tar:无法将目录更改为--exclude-from = / home / BACKUP:没有这样的文件或目录
我正在做的是以下内容:
#!/usr/local/bin/bash
#########################################################################
# Author: Marcus Gehring #
#########################################################################
#tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz --exclude-from=/home/BACKUP/$(uname -n).exclude / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz --exclude-from= "/home/BACKUP/$(uname -n).exclude" / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
但两者都不起作用。我还测试了以下内容:
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz -X "/home/BACKUP/$(uname -n).exclude" / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
排除文件如下:
/home*
/usr/local/var/httpd*
/usr/local/var/openldap-data*
如果这是原因,我还尝试了排除文件的另一部分。所以我的第二个排除文件内容是:
/home
/usr/local/var/httpd
/usr/local/var/openldap-data
任何一个想法出了什么问题? 只是为了澄清: exclude,log和archive位于一个目录中。
焦油版本:
tar(GNU tar)1.13.25
版权? 2001 Free Software Foundation,Inc。
在法律允许的范围内,本程序不附带任何担保。
您可以根据GNU General Public
的条款重新分发它许可证;有关详细信息,请参阅名为COPYING的文件。约翰撰写
Gilmore和Jay Fenlason。
此致
马库斯
更新1:
嗨Mark,感谢您的支持:)但这只是我的backup_script.sh复制的命令;)在Crontab中,调用是:
# Backup on UNIX since 08162017
01 5 * * * /home/BACKUP/backup_script.sh
UPDATE2:
白天,我在脚本中测试了其他几个命令:
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz --exclude-from=/home/BACKUP/$(uname -n).exclude / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz --exclude-from= "/home/BACKUP/$(uname -n).exclude" / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz -X '/home/BACKUP/$(uname -n).exclude' / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz -X "/home/BACKUP/$(uname -n).exclude" / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
tar -cvpf /home/BACKUP/$(uname -n)_$(date +%Y-%m-%d).tar.gz "/home/BACKUP/$(uname -n).exclude" / >> /home/BACKUP/$(uname -n)_BACKUP.log 2>&1
这一切都以相同的结果结束。排除的文件没有被排除在我得到的-X路径上" tar:-X:没有这样的文件或目录"与" - exclude-from"相同之前。
答案 0 :(得分:0)
问题是从crontab启动时使用的tar与用户tar之间的差异。
只需将which tar
添加到您的脚本中,然后将输出与控制台中的which tar
进行比较即可看出差异。