我的情况是我只有一些文件夹的执行权限:
比方说,我想备份整个文件夹并排除一些文件夹和文件,使用exclude.txt
这是我要备份的路径:
/pdf/data/pdfnew/2014
并且我只有权限从这个文件夹(主)执行:
/pdf/data/pdfnew/2014/public/main
我把exclude.txt
放在同一个文件夹,我可以执行命令(主)
我在(主文件夹)执行这个命令:
tar -cjvf -X exclude.txt 2014.tar.bz2 /pdf/data/pdfnew/2014
结果是它仍然包含我不想备份的文件夹
有正确的方法吗?
服务器上是否有user
/home
目录?你应该,所以你应该把exclude.txt
放在服务器上的user
/home
目录中。在该目录下像这样运行:
tar -cjvf -X ~/exclude.txt ~/2014.tar.bz2 /pdf/data/pdfnew/2014
~/
是user
/home
目录的简写,所以在这种情况下,它明确地声明,"从user
/home
目录读取exclude.txt
&
~/2014.tar.bz2
写入user
/home
目录。但是你还问这个:
有正确的方法吗?
从来没有一个规范的最好的方法来做这样的事情。这都是基于你的最终目标。仅此而已。没有什么更少。也就是说,如果我是你,我会这样做,而不是使用-C
选项:
tar -cjvf -X ~/exclude.txt ~/2014.tar.bz2 -C /pdf/data/pdfnew/ 2014
大写的-C
选项允许tar
在内部将工作目录更改为/pdf/data/pdfnew/
,这样您就可以创建2014
的存档,而不必在备份中保留整个目录树。我发现这更容易处理,因为很多时候我想备份目录的内容,但不需要保留父结构。这样归档就更像传统的ZIP归档,我觉得这样更容易理解& &;使用。