【问题标题】:How to backup with s3cmd, ignoring multiple directories and file types如何使用 s3cmd 备份,忽略多个目录和文件类型
【发布时间】:2013-09-23 15:26:40
【问题描述】:

我一直试图弄清楚如何备份我的文件服务器(通过 smb 的 CentOS)用户文件夹的内容,忽略某些文件类型和目录。看起来这应该很容易,但我无法弄清楚如何忽略多个目录。

我想忽略以下内容:

  • 所有以._ 开头的文件和目录
  • 所有 MS Office 临时文件(例如 ~$*
  • 锁定文件(例如.lock

我尝试了--exclude 标志的许多不同组合,但都无法正常工作。

这是最有意义的命令,但它并不排除任何东西:

s3cmd sync --dry-run --verbose --delete-removed --exclude '.*' '_*' '~$*' '*.lock' /home/user-folder s3://bucket-name/

【问题讨论】:

  • 我有兴趣跳过 .ts 文件。我去看看

标签: s3cmd


【解决方案1】:

如果你已经在使用.gitignore,你可以这样做

s3cmd sync --exclude '.git/*' --exclude-from .gitignore <local_dir> s3://<bucket>/

this blog post 中所述,并由official docs 中的--exclude-from 文档确认(Ctrl+F 并搜索“exclude-from”)。

效果很好,但有一个小缺点:如果您要排除 .gitignore 中的文件夹,则还必须排除其内容,否则 s3cmd 将获取其内容。不过,这很简单,您只需在.gitignore 内添加一行&lt;foldername&gt;/* 即可,一切都会好起来的。


编辑:

嗯,比这更好。设置一个.s3ignore 文件,然后从sync 命令中引用它:

s3cmd sync --exclude-from .s3ignore <local_dir> s3://<bucket>/

.s3ignore 示例:

.git
.git/*
.gitignore
node_modules
node_modules/*
*.swo
*.swp
*.pyo
*.pyc

【讨论】:

    【解决方案2】:

    我做过类似的事情。关键是在要匹配的每个模式之前使用 --exclude :

    s3cmd -v --recursive --exclude ".ts" --exclude ".aac" --exclude "/thumbnails" put /var/www/folder s3://bucket/
    

    我还设法使用不带通配符的 .ts 并且它适用于我的情况!

    【讨论】:

      【解决方案3】:

      其他答案提到为每个模式传递--exclude &lt;pattern&gt;,并将所有模式打包到一个文件中以与--exclude-from &lt;file&gt;一起传递

      使用

      您还可以将所有模式打包成一个正则表达式并使用--rexclude 选项传递它:

      上述问题的正则表达式模式:".^\.*|._*|.~$*|.*.lock"

      s3cmd sync --dry-run --verbose --delete-removed --rexclude ".^\.*|._*|.~$*|.*.lock" /home/user-folder s3://bucket-name/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-26
        • 2012-11-27
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        相关资源
        最近更新 更多