我在UNIX中使用tar命令来执行特定目录的备份。但是,某些目录包含当前用户没有任何读取权限的文件/子目录。结果,tar命令返回非0退出代码。
我在手册页'--ignore-failed-read'中遇到了以下修饰符,当遇到无法读取的文件时,它会禁止非0退出代码。但是,每当我尝试使用它时,我都会收到错误'unknown function modifier'。
有人可以帮我吗?
我的tar命令看起来像这样:
tar --create --ignore-failed-read --file=test.tar my_dir
答案 0 :(得分:11)
您的命令似乎完全有效,我没有看到任何拼写错误。 为了绝对肯定,我只是在运行32位Debian 7.1(wheezy)的VM上尝试使用库存内核3.2.0.4。我怀疑,存档已经成功创建(唯一的变化是,当然,源目录的名称)。我还用
检查了我的tar版本tar --version
给了我以下输出:
tar (GNU tar) 1.26
首先,您应该查看此信息。如果你得到相同的(版本号可能不同)输出,那很好。如果不是(或者看起来更老的版本),那么你可能正在使用tar,它只是不支持这个功能。
此外,您可以检查,如果您的焦油真的支持提到的标志。为此,请键入console:
tar --help | grep ignore-failed-read
你应该看到这样的事情:
--ignore-failed-read do not exit with nonzero on unreadable files
如果输出保持为空,则表示此版本的tar根本不知道此标志。
看看上述是否有任何帮助。
答案 1 :(得分:0)
在这种情况下可能更有效的另一种选择是--warning=no-file-changed
。
tar --warning=no-file-changed -czf backup.tgz dir1 dir2