6

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

我想忽略以下内容:

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

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

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

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

3 回答 3

12

如果您已经在使用.gitignore,您可以执行类似的操作

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

本博客文章--exclude-from所述,并由官方文档中的文档确认(Ctrl+F 并搜索“exclude-from”)。

它工作得很好,但有一个小缺点:如果您要排除 内的文件夹.gitignore,则还必须排除其内容,否则s3cmd将获取其内容。但是,这很容易,您只需在<foldername>/*里面添加一行.gitignore,一切都会好起来的。


编辑:

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

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

.s3ignore例子:

.git
.git/*
.gitignore
node_modules
node_modules/*
*.swo
*.swp
*.pyo
*.pyc
于 2014-06-24T03:00:22.607 回答
1

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

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

我还设法使用没有通配符的 .ts ,它在我的情况下有效!

于 2014-04-01T13:57:21.800 回答
0

其他答案提到传递--exclude <pattern>每个模式,并将所有模式打包到一个文件中以传递--exclude-from <file>

使用

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

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

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

于 2015-12-18T13:59:28.963 回答