Solaris 8中的Exclude-File不起作用

时间:2017-08-17 06:49:46

标签: shell unix backup solaris tar

我要对整个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"相同之前。

1 个答案:

答案 0 :(得分:0)

问题是从crontab启动时使用的tar与用户tar之间的差异。

只需将which tar添加到您的脚本中,然后将输出与控制台中的which tar进行比较即可看出差异。