tar 文件夹减去一个子文件夹

tar 文件夹减去一个子文件夹

我正在尝试创建一个文件夹的 tar 存档thisfolder,但想要忽略名为 的子文件夹notthisfolder。有人可以告诉我怎么做吗?我尝试对整个文件夹进行 tar 压缩,然后删除我想忽略的文件夹,但该文件夹有 17gb。

\thisfolder
  file1
  file2
  \notthisfolder
    omitfile1
    omitfile2
  \butincludethisfolder
    includefile1
    infludefile2

我正在使用tar --exclude='notthisfolder' -zcvpf archive.tar /thisfolder/

答案1

你的命令几乎是正确的。使用

 tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
  1. 请注意,--exclude notthisfolder选项档案名称。

  2. 外观评论:当使用该z选项时,您正在使用 gzip 来压缩您的 tarball,因此请命名存档archive.tar.gz而不是archive.tar

  3. 此外,/thisfolder/是绝对路径,指向thisfolder根目录内的文件夹/。要指定相对路径(相对于当前工作目录),请使用thisfolder/不带前导斜杠的/

  4. 一个小提示,您不需要cvfzp在选项前加上-。这样可以少输入一个字符!

对我有用;)

$ tree
.
└── thisfolder
    ├── butincludethisfolder
    │   ├── includefile1
    │   └── includefile2
    ├── file1
    ├── file2
    └── notthisfolder
        └── notthisfile

3 directories, 6 files

$ tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile1
thisfolder/butincludethisfolder/includefile2
thisfolder/file1
thisfolder/file2

答案2

man tar

 --exclude=PATTERN
       exclude files, given as a PATTERN

因此,给定一个这样的目录:

terdon@oregano foo $ tree
.
└── thisfolder
    ├── butincludethisfolder
    │   ├── includefile1
    │   └── includefile2
    └── notthisfolder
        ├── omitfile1
        └── omitfile2

您可以运行以下tar命令来获取您想要的内容:

tar -cvzf foo.tar --exclude notthisfolder thisfolder/

这将创建tar.foo包含以下内容的内容:

$ tar xvzf foo.tar 
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile2
thisfolder/butincludethisfolder/includefile1

答案3

看起来你的语法是错误的。

它应该更像这样:

tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder" --exclude "/notthisfolder/omitfile1" --exclude "/notthisfolder/omitfile2"

或者如果省略文件全部在/notthisfolder

tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder"

相关内容