关于shell:Solaris 8中的Exclude-File不起作用

Exclude-File in Solaris 8 doesn't work

我要为整个Solaris系统加焦油。所以我写了一个剧本。当我把这个脚本作为根运行时,一切正常!当我用cron运行相同的脚本时,我会得到一个

tar: --exclude-from=: No such file or directory

tar: can't change directories to --exclude-from=/home/BACKUP: No such file or directory

我要做的是:

1
2
3
4
5
6
7
8
#!/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

但两者都不起作用。我还测试了以下内容:

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

排除文件如下:

1
2
3
/home*
/usr/local/var/httpd*
/usr/local/var/openldap-data*

如果这是原因,我还尝试了排除文件的另一部分。所以我的第二个排除文件内容是:

1
2
3
/home
/usr/local/var/httpd
/usr/local/var/openldap-data

有人知道怎么回事吗?仅作澄清:排除、日志和存档位于一个目录中。

焦油版本:

tar (GNU tar) 1.13.25

Copyright ? 2001 Free Software Foundation, Inc.

This program comes with NO WARRANTY, to the extent permitted by law.

You may redistribute it under the terms of the GNU General Public

License; see the file named COPYING for details. Written by John

Gilmore and Jay Fenlason.

当做

马库斯

更新1:

您好,马克,感谢您的支持:)但这只是我备份的命令_script.sh;)在crontab中,调用是:

1
2
# Backup on UNIX since 08162017
01 5 * * * /home/BACKUP/backup_script.sh

更新2:

白天,我测试了脚本中的其他几个命令:

1
2
3
4
5
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:没有这样的文件或目录"与on相同"--排除在"之前"。


问题是从crontab开始时使用的tar和作为用户tar的区别。

只需将which tar添加到脚本中,并将控制台中的输出与which tar进行比较,就可以看到不同之处。