Linux tar命令:压缩目录但排除子目录

发布于 2024-07-26 09:49:41 字数 422 浏览 5 评论 0原文

场景:我在托管网站的服务器上有一个目录,其中包含数百个用户提交的图像。 我正在创建一个备份脚本,该脚本从目录中获取所有图像并将它们压缩到一个 .tar.gz 文件中。 到目前为止我的命令是:

tar -czpf /path/to/backups/my_backup.tar.gz 路径/to/images/

问题:我的path/to/images/中没有我有一个名为tmp/的目录。 当我运行该命令时,我得到一个 .tar.gz 文件,其中包含 path/to/images/ 目录中的所有图像和一个名为 tmp/ 的子目录。

问题:如何获取命令来跳过/不包含 .tar.gz 文件中的 tmp/ 子目录。

预先感谢一百万。

Scenario: I have a directory on a server that hosts my website that contains hundreds of user-submitted images. I am creating a backup script that takes all the images from the directory and compresses them into one .tar.gz file. The command I have so far is:

tar -czpf /path/to/backups/my_backup.tar.gz path/to/images/

Problem: No inside my path/to/images/ I have a directory called tmp/. When I run the command, I get a .tar.gz file containing all the image in the path/to/images/ directory and a subdirectory called tmp/.

Question: How can I get the command to skip/not include the tmp/ subdirectory in the .tar.gz file.

Thanks a million in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

(り薆情海 2024-08-02 09:49:41

您正在寻找 --exclude 参数。

--exclude=PATTERN

一些用户发现排除选项令人困惑。 以下是一些常见的陷阱:

  • tar的主要运行模式不作用于路径名
    如果其文件名之一在命令行上明确列出
    组件被排除在外。 在上面的示例中,如果您创建一个
    归档并排除以 *.o 结尾但明确命名的文件
    列出所有选项后的文件 dir.o/foo
    dir.o/foo 将从归档中排除。

  • 有时您可能会混淆 --exclude=PATTERN
    --exclude-from=FILE-OF-PATTERNS-X FILE-OF-PATTERNS)。 是
    小心:当要排除的文件位于
    在命令行上以模式形式给出。 使用
    --exclude-from=FILE-OF-PATTERNS 引入文件名
    其中包含模式列表,每行一个; 这些中的每一个
    模式可以排除零个、一个或多个文件。

  • 当您使用--exclude=PATTERN时,请务必引用PATTERN
    参数,因此 GNU tar 会看到 * 等通配符。 如果你
    不要这样做,shell 可能会使用文件扩展 * 本身
    手头上,因此 tar 可能会收到文件列表而不是一个
    模式,或者根本没有模式,使得该命令有些非法。
    这可能与您想要的不符。

例如,写:

$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY

而不是:

$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
  • 您必须使用 use shell 语法或通配符,而不是 regexp
    语法,在 tar 中使用排除选项时。 如果您尝试使用
    regexp 语法来描述要排除的文件,您的命令
    可能会失败。

You are looking for the --exclude argument.

--exclude=PATTERN

Some users find exclude options confusing. Here are some common pitfalls:

  • The main operating mode of tar does not act on a path name
    explicitly listed on the command line if one of its file name
    components is excluded. In the example above, if you create an
    archive and exclude files that end with *.o, but explicitly name
    the file dir.o/foo after all the options have been listed,
    dir.o/foo will be excluded from the archive.

  • You can sometimes confuse the meanings of --exclude=PATTERN and
    --exclude-from=FILE-OF-PATTERNS (-X FILE-OF-PATTERNS). Be
    careful: use --exclude=PATTERN when files to be excluded are
    given as a pattern on the command line. Use
    --exclude-from=FILE-OF-PATTERNS to introduce the name of a file
    which contains a list of patterns, one per line; each of these
    patterns can exclude zero, one, or many files.

  • When you use --exclude=PATTERN, be sure to quote the PATTERN
    parameter, so GNU tar sees wildcard characters like *. If you
    do not do this, the shell might expand the * itself using files
    at hand, so tar might receive a list of files instead of one
    pattern, or none at all, making the command somewhat illegal.
    This might not correspond to what you want.

For example, write:

$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY

rather than:

$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
  • You must use use shell syntax, or globbing, rather than regexp
    syntax, when using exclude options in tar. If you try to use
    regexp syntax to describe files to be excluded, your command
    might fail.
好多鱼好多余 2024-08-02 09:49:41
tar -czpf /path/to/backups/my_backup.tar.gz --exclude path/to/images/tmp path/to/images/
tar -czpf /path/to/backups/my_backup.tar.gz --exclude path/to/images/tmp path/to/images/
你是暖光i 2024-08-02 09:49:41

这应该可以工作(假设 GNU tar):

tar -czpf /path/to/backups/my_backup.tar.gz --exclude=tmp path/to/images/

This should work (assuming GNU tar):

tar -czpf /path/to/backups/my_backup.tar.gz --exclude=tmp path/to/images/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文