2013-09-23 27 views
5

Tôi đã cố gắng tìm cách sao lưu nội dung trong thư mục người dùng của máy chủ tệp (CentOS qua smb), bỏ qua một số loại tệp và thư mục nhất định. Nó có vẻ như thế này nên dễ dàng, nhưng tôi không nhận được bất cứ nơi nào về việc tìm ra cách bỏ qua nhiều thư mục.Cách sao lưu với s3cmd, bỏ qua nhiều thư mục và loại tệp

Tôi muốn bỏ qua những điều sau đây:

  • tất cả các file và thư mục bắt đầu với một . hoặc một _
  • tất cả các file tạm thời MS Office (ví dụ ~$*)
  • file khóa (ví dụ .lock)

Tôi đã thử một loạt các kết hợp khác nhau của cờ --exclude, nhưng không thể làm bất kỳ việc gì để làm việc ght.

Đây là lệnh mà làm cho ý nghĩa nhất, nhưng nó không loại trừ bất cứ điều gì:

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

Tôi quan tâm đến bỏ qua .ts tập tin. Tôi sẽ xem qua một chút – Ben

Trả lời

1

Tôi đã làm điều gì đó tương tự. Điều quan trọng là sử dụng --exclude trước mỗi mẫu bạn muốn kết hợp:

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

Ngoài ra tôi quản lý để sử dụng .ts mà không có biểu tượng ký tự đại diện và nó hoạt động trong trường hợp của tôi!

8

Nếu bạn đang sử dụng .gitignore, bạn có thể làm điều gì đó như

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

như đã nêu trong this blog post và xác nhận bởi các tài liệu cho --exclude-from từ official docs (Ctrl + F và tìm kiếm "loại trừ-từ") .

Hoạt động tuyệt vời, với một hạn chế nhỏ: nếu bạn loại trừ thư mục trong phạm vi .gitignore, bạn cũng phải loại trừ nội dung của nó hoặc s3cmd sẽ lấy nội dung của nó. Tuy nhiên, điều này là dễ dàng, bạn chỉ có thể thêm một dòng như <foldername>/* bên trong .gitignore và mọi thứ sẽ ổn.


EDIT:

Vâng, tốt hơn thế này.Thiết lập hồ sơ .s3ignore và chỉ đề cập đến nó từ sync lệnh:

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

.s3ignore dụ:

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

câu trả lời khác đề cập đến qua --exclude <pattern> cho mỗi mẫu, và đóng gói tất cả các mô hình vào một tập tin để vượt qua với --exclude-from <file>

Sử dụng :

Bạn cũng có thể đóng gói tất cả các mô hình thành một biểu thức chính quy và vượt qua nó với các tùy chọn --rexclude:

Các mô hình Regex cho câu hỏi trên: ".^\.*|._*|.~$*|.*.lock"

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

Các vấn đề liên quan