Cadangkan direktori home Anda dengan rsync dan lewati folder yang tidak berguna

24

Anda dapat dengan mudah membuat cadangan folder rumah Anda pada hard drive eksternal

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

Saya mengecualikan folder .cache karena saya pikir saya tidak akan pernah memerlukannya ketika saya harus menginstal ulang dari cadangan ini.

Saya menemukan daftar semua folder yang dapat saya kecualikan dalam cadangan normal di sini:
File dan direktori apa yang dapat dikecualikan dari cadangan direktori home?

Saya membuat daftar jawaban ini yang berisi beberapa komentar dalam bentuk ini:

#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

Berikut adalah daftar lengkapnya di intisari

Bagaimana saya bisa menambahkan daftar ini ke perintah rsync saya?

rubo77
sumber
1
selain itu .Trash, ada juga sering .Trash-1000(setidaknya di bawah Ubuntu-MATE 14 saat ini), jadi lebih baik menerima .Trash-*?
Frank Nocke

Jawaban:

40

Daftar pengecualian hanya boleh berisi nama file, nama lipat, dan baris yang dimulai dengan #. Tidak ada komentar di balik nama pengguna. Saya membuat repositori Git dengan semua file dan folder yang dikenal yang berlebihan:

Unduh ignorelist ini ke / var / tmp / ignorelist

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

Kemudian mulai rsync dengan

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

Catatan:
Di ignorelist ada bagian di awal dengan folder, yaitu direktori, mungkin tidak layak untuk dicadangkan.

rubo77
sumber
2
Anda dapat menggabungkan kedua perintah, karena rsyncdapat membaca dari stdin:wget https://... -O - | rsync -a --progress --exclude-from=- ...
muru
8
Poin yang bagus, tapi saya pikir disarankan terlebih dahulu untuk melihat si pengabai sebelum memulai rsync
rubo77
secara mengejutkan node_modulestidak ada dalam daftar
jchook
Anda tidak ingin menyimpan node_modulesbeberapa direktori konfigurasi Anda? Bayangkan, Anda ingin memindahkan direktori home ke komputer baru, Anda harus menyimpannya saat itu.
rubo77
4

Dari 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.
muru
sumber
Ada daftar seperti itu, saya mengedit pertanyaan saya
rubo77
@ rubo77 Saya setuju dengan pernyataan saya bahwa tidak ada daftar semua folder yang dapat Anda kecualikan. Itu rekomendasi, dan saya ragu bahkan Lekenstyn akan mengatakan itu adalah daftar lengkap.
muru
Daftar ini tidak harus lengkap. Saya hanya ingin membuat cadangan saya lebih cepat sehingga melewati folder yang jelas tidak berguna
rubo77
@ rubo77 Saya pikir Anda harus mengubah komentar ke baris yang berbeda.
muru
thx, saya memperbarui file inti sehingga komentarnya berada pada satu baris
rubo77
0

Bisa coba ini jika direktori dan file di dalamnya adalah semua yang Anda ingin cadangkan. Tidak termasuk semua direktori tersembunyi.

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

arth
sumber
Bisakah Anda lebih spesifik "hilang kutipan"?
Arth
Oh, maaf - saya terse, dan mengacaukannya dengan salah ketik: "quotest", bukannya "quotes" hilang.
Volker Siegel
Shell dapat memperluas *(mungkin tidak di tempat itu?). Path harus dikutip - nama pengguna tidak boleh mengandung spasi, tetapi /media/bisa jadi /Old Media/atau lebih ...
Volker Siegel
Saya minta maaf saya tidak mendapatkannya. '. *' Tidak termasuk '.' pola yang merupakan direktori tersembunyi di direktori home '/ home / $ USER /' ke tujuan backup: hdd eksternal atau drive pen '/ media / $ USER / folder'. Dengan melakukan ini, hanya direktori dan file aktual yang sedang dicadangkan. Jika Anda menunjuk sesuatu yang lain, tolong jelaskan.
Arth
4
Tidaklah masuk akal untuk mengecualikan semua direktori yang dimulai dengan titik, misalnya direktori thunderbird adalah salah satu direktori yang paling penting
rubo77