Wykonaj kopię zapasową katalogu domowego za pomocą rsync i pomiń niepotrzebne foldery

24

Za pomocą można łatwo wykonać kopię zapasową folderu domowego na zewnętrznym dysku twardym

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

Wyłączyłem folder .cache, ponieważ myślę, że nigdy go nie będę potrzebować, gdy będę musiał ponownie zainstalować z tej kopii zapasowej.

Znalazłem tutaj listę wszystkich folderów, które mogłem wykluczyć w normalnej kopii zapasowej:
Jakie pliki i katalogi można wykluczyć z kopii zapasowej katalogu domowego?

Utworzyłem listę tej odpowiedzi, która zawiera kilka komentarzy w tej formie:

#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

Oto pełna lista na gist

Jak mogę dodać tę listę do mojego polecenia rsync?

rubo77
źródło
1
poza .Trashtym często też .Trash-1000(przynajmniej pod obecnym Ubuntu-MATE 14), więc lepiej się zadowolić .Trash-*?
Frank Nocke

Odpowiedzi:

40

Lista wykluczeń może zawierać tylko nazwy plików, nazwy folderów i linie zaczynające się od #. Komentarz za nazwą folderu nie jest dozwolony. Utworzyłem repozytorium Git ze wszystkimi znanymi plikami i folderami, które są zbyteczne:

Pobierz tę listę ignorowanych do / var / tmp / ignorelist

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

Następnie uruchom rsync za pomocą

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

Uwaga: na
liście ignorowanych na początku znajduje się sekcja z folderami, które są katalogami, prawdopodobnie nie wartymi kopii zapasowej.

rubo77
źródło
2
Możesz łączyć te dwa polecenia, ponieważ rsyncmożesz czytać z stdin:wget https://... -O - | rsync -a --progress --exclude-from=- ...
muru
8
dobra uwaga, ale myślę, że warto najpierw spojrzeć na listę ignorowanych przed uruchomieniem rsync
rubo77
zaskakująco node_modulesnie ma go na liście
jchook
nie chcesz przechowywać node_modulesw niektórych katalogach konfiguracji? Wyobraź sobie, że chcesz przenieść katalog domowy na nowy komputer, musiałbyś je wtedy zachować.
rubo77
4

Od 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
źródło
Jest taka lista, zredagowałem moje pytanie
rubo77
@ rubo77 Podtrzymuję moje oświadczenie, że nie ma listy wszystkich folderów, które można wykluczyć. To zalecenie i wątpię, by nawet Lekenstyn powiedział, że to pełna lista.
muru
Lista nie musi być kompletna. Chciałbym tylko szybciej utworzyć kopię zapasową, więc pomiń oczywiste bezużyteczne foldery
rubo77,
@ rubo77 Myślę, że będziesz musiał przenieść komentarze do różnych linii.
muru
dzięki, zaktualizowałem plik gist, aby komentarze były w jednym
wierszu
0

Spróbuj tego, jeśli chcesz utworzyć kopię zapasową katalogów i plików. Nie obejmuje wszystkich ukrytych katalogów.

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

arth
źródło
Czy możesz być bardziej konkretnym „brakującym cytatem”?
arth
Och, przepraszam - byłem zwięzły i zepsułem to literówką: brakowało „cytatów” zamiast „cytatów”.
Volker Siegel
Powłoka może rozwinąć *(może nie w tym miejscu?). Ścieżki powinny być cytowane - nazwa użytkownika nie może zawierać spacji, ale /media/może być /Old Media/mniej więcej ...
Volker Siegel
Przepraszam, że nie rozumiem. „. *” Nie zawiera żadnego „.” wzorzec, którym są ukryte katalogi w katalogu domowym „/ home / $ USER /” do miejsca docelowego kopii zapasowej: zewnętrzny dysk twardy lub pendrive „/ media / $ USER / folder”. W ten sposób tworzone są kopie zapasowe tylko rzeczywistych katalogów i plików. Jeśli wskazujesz coś innego, dopracuj.
arth
4
Nie ma sensu wykluczanie wszystkich katalogów zaczynających się od kropki, na przykład katalog .thunderbird jest jednym z najważniejszych katalogów
rubo77