Solaris 8 中的排除文件不起作用

Exclude-File in Solaris 8 doesn't work

我要 tar 整个 Solaris 系统。因此我写了一个脚本。当我 运行 这个脚本作为 root 时一切正常!当我从 cron 中 运行 使用相同的脚本时,我得到一个

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

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

我正在做的是:

#!/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

有人知道怎么回事吗? 只是为了澄清: 排除、日志和存档在一个目录中。

Tar-版本:

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:

嗨,马克,感谢您的支持:)但这只是我的 backup_script.sh 复制的命令;) 在 Crontab 中调用是:

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

更新 2:

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

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”相同。

问题是当从 crontab 执行 tar 时和作为用户 tar.

使用 tar 之间的差异

只需将 which tar 添加到您的脚本并将输出与控制台的 which tar 进行比较以查看差异。