Utilizzo di rsync per il backup


13

Attualmente eseguo il backup dei contenuti di un disco rigido esterno A tramite (1) eliminando tutto nel disco rigido esterno di destinazione B e (2) copiando tutto da A a B (nel Finder). Il disco rigido esterno contiene solo "dati di base" (cartelle, immagini, video, documenti, ecc.), Niente di speciale / strano.

Ma con tutti gli incredibili strumenti gratuiti esistenti là fuori non sono riuscito a trovarne uno decente per il backup (suggerimenti accettati).

Voglio automatizzare questo. Dopo alcune ricerche, sembra che posso usare rsync. Voglio quindi automatizzare questo usando rsyncper evitare di copiare i file che sono già sul disco rigido di destinazione (ovviamente, se è stata apportata una modifica, voglio aggiornare il file / la cartella; lo stesso con i file / le cartelle cancellati o i nuovi file / cartelle; l'idea è di imitare ciò che di solito faccio manualmente con Finder).

Sono arrivato a questo punto

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Ora il registro è pieno di file il cui nome inizia con .o ._o addirittura ._.. Sono necessari?

Domanda

Come posso copiare solo i file che contano, lasciando indietro tutti quelli che non contano. Ad esempio, se ho photo.pngmi aspetterei di copiare photo.png, non ._photo.pngo molti file.

Cosa --excludeo --exclude-frompuò essere utilizzato in sicurezza su un Mac? Potrebbe essere una buona regola è "basta copiare tutto ciò che Finder mostra" che è quello che vorrei copiare se passassi manualmente attraverso tutte le cartelle.

 Domanda extra

È -av --progress --deleteabbastanza? Sto commettendo un crimine o sto rischiando alcuni dati? Quali opzioni useresti.

Per favore, appoggia la tua risposta con alcuni argomenti, lo apprezzerei.

Sto cercando un modo per automatizzare rsyncche sembra abbastanza potente e gratuito da usare.


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
bmike

Sulla strategia descritta al primo paragrafo, cosa succede se dopo (1) - l'eliminazione di tutto in B - si verifica un problema serio ad A? Potresti perdere l'accesso ai dati su A e sul suo backup precedente. Se lo spazio di archiviazione di backup ha spazio sufficiente, che ne dite di eliminare il backup solo dopo che un backup più recente è stato completato correttamente?
Ricardo,

1
Il link di @ bmike alla conversazione che è stata spostata in chat è interrotto.
Merchako,

Risposte:


17

Per la massima sicurezza, copia tutto

L' opzione più sicura è copiare tutto , compresi i file di metadati invisibili.

I file tendono ad esistere per una ragione e come i cambiamenti del software, così come l'esistenza, lo scopo e il contenuto di questi file di metadati. Copiare tutto ridurrà l'onere della manutenzione e offrirà la tranquillità di non perdere nulla.

Il file di registro creato da rsyncsarà tecnicamente coinvolto dalla natura stessa di rsyncessere uno strumento da riga di comando. Prendi in considerazione la possibilità di presentare un output ordinato, filtrato con metadati e forse anche un codice colorato che l'utente possa verificare. Puoi farlo con una vasta gamma di strumenti e linguaggi di scripting. Si prega di porre ulteriori domande qui su Chiedi diverso e su StackOverflow se hai bisogno di aiuto con questo approccio.

Elimina ultimo e copia risorse OS X.

Per quanto riguarda le rsyncbandiere, dai un'occhiata alla domanda Il modo più rapido e sicuro per copiare dati di grandi dimensioni da un'unità esterna a un'altra . In questa domanda, vengono utilizzati e spiegati alcuni flag aggiuntivi:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

In questa situazione, Egarantirà la copia di fork di risorse e altre proprietà specifiche per Mac.

Si consiglia --delete-afterdi evitare di eliminare fino al completamento della copia; si noti che questo approccio richiederà potenzialmente un'unità di destinazione doppia rispetto alla dimensione della sorgente.

Possibili esclusioni

Una risposta a una domanda correlata, Come posso omettere FCPX Render Files da un backup di Time Machine? , fornito un utile collegamento di file e cartelle OS X che possono essere esclusi dalla maggior parte dei backup . Questo collegamento fornisce un pratico elenco di modelli di file, cartelle e percorsi che è possibile escludere.

Includi file dot

Esistono buoni motivi per eseguire il backup dei file che iniziano con punti e .*corrispondenti file.

Alcuni software mantengono le preferenze, le impostazioni e altre informazioni di valore nelle cartelle nella parte superiore della cartella dell'utente in cartelle con punti invisibili. L'esecuzione ls -la ~/rivelerà queste cartelle e file.

Se un utente utilizza o dispone di un software che a sua volta utilizza un software di controllo versione, assicurarsi di eseguire il backup dei file dot. Software come sovversione e git entrambi archiviano informazioni critiche nelle loro cartelle di punti. Queste cartelle nascoste possono essere sparse nel tuo file system, ovunque un progetto venga estratto.

Spotlight e accesso al disco

Spotlight è il servizio di ricerca di OS X. Spotlight utilizza il mdworkerprocesso per indicizzare e aggiornare il catalogo di ricerca. Se sei preoccupato per la possibile corruzione del disco o per le copie lente, può essere utile disabilitaremdworker durante l'esecuzione rsync. Personalmente, lascio Spotlight in esecuzione mentre eseguo grandi rsynctrasferimenti.


3
L'opzione più sicura è copiare tutto, compresi i file di metadati invisibili. Ma lo stesso link di Carbon Copy Cloner dice che ci sono alcuni file che vengono creati automaticamente, quindi potrebbe persino corromperli se copiati rsync.
Manuel,

1
Potresti aggiungere un esempio completo per i futuri lettori. Ho trovato due fonti, una e due (più la terza che hai collegato); Li lascio qui per riferimento futuro.
Manuel,

1
"Esistono buoni motivi per eseguire il backup dei file che iniziano con i punti": sì! Questi file sono nascosti (dal Finder per i manichini) ma il più delle volte si tratta di file molto importanti.
dan

1
I Ee --delete-aftersono i punti chiave che rendono questa risposta vincente.
dan

1
@danielAzuelos A partire da -E, nelle versioni più recenti c'è quella -Xche vedo raccomandata in alcuni punti, qual è la corretta? O entrambi? Vorrei uno pseudo-completo aggiornato che copra la maggior parte delle preoccupazioni generali. Copiare i file Spotlight sarebbe più facile e veloce che lasciarli generare? Come posso arrestare Spotlight in modo che non si scherzi nel frattempo? Che dire caffeinatedel processo? O potrebbe essere se è solo un elenco di backup che non lo rende indicizzabile da Spotlight, molte meno preoccupazioni, ecc. Molte di queste domande hanno avuto una risposta certa.
Manuel,

5

Se stai usando la rsyncversione 3.0.6 secondo Carbon Copy Cloner o 3.1.2 secondo Homebrew, puoi prendere spunto dagli argomenti di Carbon Copy Cloner:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>


--protect-decmpfsnon è più disponibile dalla 3.1.3, vedi github.com/Homebrew/homebrew-core/pull/23415 .
user74686

4

Sconsigliamo di eliminare i metadati durante un backup, in particolare i file di punti, ad esempio ._$filename, tuttavia se si desidera davvero escludere i file di punti dal rsynccomando aggiungere --exclude '.*'ad esso.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B

Questo è buono. Non ero sicuro che la rimozione di tutti i file dot sarebbe problematica (a proposito, c'è qualche differenza tra '.*'e '/.*'?). Non credo che Finder li copi tutti, potrebbe essere solo alcuni associati. In tal caso, preferirei escludere solo quelli non necessari (ad es .DS_Store.). E sì, quelli che potrebbero essere importanti, ma che non voglio avere nel mio registro, posso filtrare con espressioni regolari.
Manuel,

1
Ciò che il Finder copia non è documentato e questa è la fonte del problema di tutti durante la creazione di una politica di backup. È necessario conservare una copia di tutti i file se si desidera un backup che possa essere utilizzato esattamente al posto del Adisco.
dan

@danielAzuelos Non è così, nel caso in cui il disco rigido principale A si spenga, quindi comprerò un terzo disco rigido C, copierò dal disco rigido B sul disco rigido C e probabilmente inizierò a utilizzare uno di B o C. Dico di nuovo, che questo non è il tipo di backup che è necessario utilizzare come fa SuperDuper. È solo che le mie foto sono migliori in due posti anziché in uno solo.
Manuel,

4

Non sono completamente soddisfatto delle risposte attuali, ma cercherò di illustrare qui alcune delle possibilità che ho visto sul web cercando di trovare una buona configurazione per rsync.

E, a proposito, se uno è interessato a Time Machine come le copie, c'è rsnapshot. E c'è anche Unison per le sincronizzazioni bidirezionali. Inoltre, in realtà ci sono alcune GUI, come Backup Utility e arRsync ; non esattamente quello che stavo cercando, ma potrebbero fare il lavoro per qualcuno.

Innanzitutto, la mia unica intenzione era quella di duplicare foto e video, quindi non era necessaria una copia esatta, quindi non è necessario preoccuparsene troppo . In realtà la maggior parte dei miei dubbi era se potessi escludere tutto (lo stesso che accadrebbe se, diciamo, avessi scaricato una foto da Internet, avessi semplicemente scaricato un .png, tutto il resto non è stato scaricato ma generato automaticamente ).

Ecco un elenco non strutturato di pensieri che potresti voler prendere in considerazione

  • Voglio assicurarti che il tuo laptop non vada a dormire, potresti voler eseguire caffeinateil processo caffeinate -s rsync -av .... Tratto da qui .

  • Se si sta facendo copie locali, come nel mio caso, o anche se la connessione Internet non è troppo lento, si dovrebbe non utilizzare -zl'opzione (compressione), e l'uso -W(il trasferimento di file intero, piuttosto che i trasferimenti Delta, questo è un valore predefinito quando locale) e probabilmente lo usano --inplaceper rendere veloci i trasferimenti. Tratto da qui .

  • È possibile utilizzare in --delete-aftermodo che qualsiasi file venga prima trasferito, quindi spostato sulla destinazione (ed eliminato quello originale) ed è più sicuro dell'eliminazione prima del trasferimento o durante il trasferimento.

  • È possibile interrompere il trasferimento premendo ctrl + Ce si arresterà in modo pulito. Tratto da qui . Questa è stata una delle mie paure con SuperDuper !, se devi interrompere un trasferimento, ricevi il messaggio "Lascerai il disco rigido in uno stato sconosciuto ...".

  • Nelle versioni recenti c'è quello --info=progress2che aggiunge ulteriori dettagli a -v.

  • C'è -P(che è uguale --partiale --progress) che lascerà lì i file trasferiti a metà in modo da poter continuare quando si riavvia il processo (se per qualche motivo non è possibile terminare la sincronizzazione in una sola volta).

  • Uno potrebbe essere interessato a interrompere Spotlight o TimeMachine prima di eseguire la copia e riattivarli dopo il trasferimento. E persino disabilitare Spotlight per il disco esterno.

  • Altre opzioni utilizzate in tutti quei riferimenti a -x(o --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), e --sparse, --hfs-compression, --protect-decmpfs. Potresti volerli guardare.

Per me, sembra un comando di base (potrei usare più opzioni, ma questo è sufficiente per un esempio):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Ora nel mio caso potrei semplicemente includere {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}e nessuno direbbe "hai bisogno anche di file di sistema" ma dal momento che non voglio cercare per ottenere tutti i possibili tipi di file di cui ho i file, preferisco escludere. E ci sono cose che non solo possono essere ma sembrano comode da escludere.

Ho trovato alcuni link, prendi quello che vuoi:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

E da lì probabilmente potresti ottenere ciò che è sicuro o sano da ignorare. Ecco l'elenco completo (ho appena rimosso i duplicati)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf

3

Ho usato rsync per i backup in diversi lavori e lo uso a casa.

Lo consiglio vivamente, ma con alcune modifiche. Come strumento di backup, è fantastico, ma come strumento di archiviazione è un po 'piatto. Sì, copia tutto, ma non ottieni versioni di tutto, ottieni sempre solo le ultime versioni.

Ho usato questa guida http://www.mikerubel.org/computers/rsync_snapshots/ come punto di partenza. Leggi l'intera pagina Fa un ottimo lavoro nel spiegare le opzioni e delinea come implementare i backup incrementali. E sorprendentemente, l'articolo ha più di 10 anni ma è ancora applicabile oggi. Devi amare unix.


1
Grazie. In ogni caso, volevo coprire le considerazioni speciali che si potrebbero prendere sotto Mac OS X. Non volevo davvero solo una guida rsync. In ogni caso, buon collegamento, si estende su un sacco di rsync, ma non v'è ad oggi uno strumento per fare esattamente questo: rsnapshot.
Manuel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.