Sao lưu thư mục nhà của bạn với rsync và bỏ qua các thư mục vô dụng


24

Bạn có thể dễ dàng sao lưu thư mục nhà của mình trên ổ cứng ngoài với

rsync -a --exclude=.cache --progress /home/$USER /media/linuxbackup/home/$USER

Tôi đã loại trừ thư mục .cache vì tôi nghĩ rằng tôi sẽ không bao giờ cần đến nó khi tôi phải cài đặt lại từ bản sao lưu này.

Tôi tìm thấy danh sách này của tất cả các thư mục mà tôi có thể loại trừ trong một bản sao lưu bình thường ở đây:
Những tập tin và thư mục nào có thể được loại trừ khỏi bản sao lưu của thư mục chính?

Tôi đã tạo một danh sách câu trả lời này có chứa một số coment trong mẫu này:

#These directories may be excluded:

.gvfs                           # contains mounted file systems?
.local/share/gvfs-metadata
.Private                        # contains the actual encrypted home directory
.dbus                           # session-specific
.cache
.Trash                          # do I need to say more?
.local/share/Trash
.cddb                           # cached info about audio CDs
.aptitude                       # cached packages lists

#Flash-specific:

.adobe                          # Cache for flash, maybe others?
.macromedia   # except for Flash persistence, there is no reason to keep this

#Files:

.xsession-errors            # contains errors from the current graphical session
.recently-used              # recently used files
.recently-used.xbel
.thumbnails

Dưới đây là danh sách đầy đủ tại ý chính

Làm cách nào để thêm danh sách này vào lệnh rsync của tôi?


1
bên cạnh đó .Trash, cũng thường xuyên .Trash-1000(ít nhất là theo Ubuntu-MATE 14 hiện tại), vì vậy giải quyết tốt hơn cho .Trash-*?
Frank Nocke

Câu trả lời:


40

Danh sách loại trừ chỉ có thể chứa tên tệp, tên thư mục và dòng bắt đầu bằng #. Một bình luận đằng sau tên người dùng không được phép. Tôi đã tạo một kho lưu trữ Git với tất cả các tệp và thư mục đã biết là không cần thiết:

Tải về máy ignorelist đến / var / tmp / ignorelist

wget https://raw.githubusercontent.com/rubo77/rsync-homedir-excludes/master/rsync-homedir-excludes.txt -O /var/tmp/ignorelist

Sau đó bắt đầu rsync với

rsync -aP --exclude-from=/var/tmp/ignorelist /home/$USER/ /media/$USER/linuxbackup/home/

Lưu ý:
Trong phần không biết gì, có một phần ở đầu với các thư mục, đó là các thư mục, có thể không đáng để sao lưu.


2
Bạn có thể kết hợp hai lệnh, vì rsynccó thể đọc từ stdin:wget https://... -O - | rsync -a --progress --exclude-from=- ...
muru

8
điểm tốt, nhưng tôi nghĩ rằng trước tiên nên xem xét người ngu dốt trước khi bắt đầu rsync
rubo77

đáng ngạc nhiên node_moduleslà không có trong danh sách
jchook

bạn không muốn giữ node_modulestrong một số thư mục cấu hình của bạn? Hãy tưởng tượng, bạn muốn chuyển thư mục chính của bạn sang một máy tính mới, bạn sẽ cần phải giữ những thư mục đó sau đó.
rubo77

4

Từ man rsync:

 --exclude-from=FILE     read exclude patterns from FILE
          This option is related to the --exclude option, but it specifies
          a FILE that contains exclude patterns  (one  per  line).   Blank
          lines  in  the  file  and  lines  starting  with  ’;’ or ’#’ are
          ignored.  If FILE is -, the list  will  be  read  from  standard
          input.

Có một danh sách như vậy, tôi đã chỉnh sửa câu hỏi của mình
rubo77

@ rubo77 Tôi tuyên bố rằng không có danh sách tất cả các thư mục bạn có thể loại trừ. Đó là một khuyến nghị và tôi nghi ngờ ngay cả Lekenstyn cũng sẽ nói đó là một danh sách đầy đủ.
muru

Danh sách không cần phải hoàn thành Tôi chỉ muốn tạo bản sao lưu của mình nhanh hơn để bỏ qua các thư mục vô dụng rõ ràng
rubo77

@ rubo77 Tôi nghĩ bạn sẽ phải chuyển các bình luận sang các dòng khác nhau.
muru

Thx, tôi đã cập nhật tệp chính để các bình luận nằm trên một dòng
rubo77

0

Có thể thử điều này nếu các thư mục và tệp trong tất cả những gì bạn muốn sao lưu. Không bao gồm tất cả các thư mục ẩn.

rsync -aP --exclude=.* /home/$USER/ /media/$USER/folder


Bạn có thể cụ thể hơn "trích dẫn thiếu"?
Arth

Ôi, xin lỗi - tôi thật ngắn gọn và làm nó rối tung lên bởi một lỗi đánh máy: "trích dẫn" thay vì "trích dẫn" bị thiếu.
Volker Siegel

Vỏ có thể mở rộng *(có thể không ở nơi đó?). Các đường dẫn nên được trích dẫn - tên người dùng không thể chứa một khoảng trắng, nhưng /media/có thể /Old Media/hoặc như vậy ...
Volker Siegel

Tôi xin lỗi tôi không nhận được nó. '. *' Là không bao gồm bất kỳ '.' mẫu là các thư mục ẩn trong thư mục chính '/ home / $ USER /' đến đích sao lưu: hdd ngoài hoặc ổ bút '/ media / $ USER / thư mục'. Bằng cách này, chỉ có các thư mục và tập tin thực tế đang được sao lưu. Nếu bạn đang chỉ một cái gì đó khác, xin vui lòng giải thích.
Arth

4
Thật không hợp lý khi loại trừ tất cả các thư mục bắt đầu bằng dấu chấm, ví dụ: thư mục .thunderbird là một trong những thư mục quan trọng nhất
rubo77 17/05/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.