Suggerimenti e trucchi rsync preferiti


57

Più utilizzo e rsyncpiù mi rendo conto che si tratta di un coltellino svizzero di trasferimento di file. Ci sono così tante opzioni. Recentemente ho scoperto che puoi andare --remove-source-filese cancellerà un file dall'origine quando è stato copiato, il che lo rende un po 'più una mossa, piuttosto che copiare il programma. :)

Quali sono i tuoi piccoli consigli e trucchi rsync preferiti?

Risposte:


19

Prova a utilizzare rsync versione 3 se devi sincronizzare molti file! V3 crea il suo elenco di file in modo incrementale ed è molto più veloce e utilizza meno memoria rispetto alla versione 2.

A seconda della piattaforma, questo può fare la differenza. Su OSX la versione 2.6.3 richiederebbe più di un'ora o un arresto anomalo nel tentativo di creare un indice di 5 milioni di file mentre la versione 3.0.2 che ho compilato ha iniziato a copiare immediatamente.


Una cosa da notare è che se si utilizzano alcune opzioni (come --delete-beforead esempio) viene utilizzato il vecchio comportamento "Elenco build prima" in quanto è necessario per il corretto funzionamento di queste opzioni, quindi se non si vede questo comportamento verificare se il sono note altre opzioni che stai utilizzando per impedire che sia possibile. Ciò può essere utile se si utilizza rsync in modo interattivo su un albero di grandi dimensioni e si desidera forzare la scansione iniziale in modo che l'output di --progresssia accurato (ovvero il conteggio degli "oggetti da confrontare" non aumenterà mai poiché non verranno trovati nuovi oggetti dopo la scansione iniziale ).
David Spillett,

18

Utilizzo --link-destper creare backup basati su snapshot efficienti in termini di spazio, in base ai quali sembra che si disponga di più copie complete dei dati di backup (uno per ogni esecuzione di backup) ma i file che non cambiano tra le esecuzioni sono hard-link invece di creare nuove copie risparmiando spazio.

(in realtà, uso ancora il metodo rysnc-followed-by-cp -al che ottiene la stessa cosa, vedi http://www.mikerubel.org/computers/rsync_snapshots/ per un riassunto oldish-ma-ancora-molto buono di entrambe le tecniche e problemi correlati)

L'unico svantaggio principale di questa tecnica è che se un file è danneggiato a causa di un errore del disco è altrettanto corrotto in tutte le istantanee che si collegano a quel file, ma ho anche dei backup offline che proteggono da questo in misura decente. L'altra cosa da cercare è che il tuo filesystem ha abbastanza inode o ne finirai prima di esaurire lo spazio su disco (anche se non ho mai avuto problemi con le impostazioni predefinite ext2 / 3).

Inoltre, non dimenticare mai l'utilissimo --dry-runper una piccola paranoia sana, specialmente quando stai usando le --delete*opzioni.


6
+1 per --dry-run
David Z

1
Nota che -n è la scorciatoia per --dry-run
ctennis il

3
Preferisco attenermi ai nomi lunghi, specialmente negli script che altri potrebbero finire per mantenere. Rende più chiaro ciò che si intende senza riferimento ai documenti.
David Spillett,

+1 Ho implementato una soluzione di backup di molti TB su molte macchine con il metodo --link-dest per gli snapshot collegati come descritto sopra - ha funzionato perfettamente.
matja

Se ti piacciono i backup --link-dest, dai un'occhiata a Dirvish che usa rsync sotto il cofano
hfs

14

Se è necessario aggiornare un sito Web con alcuni file di grandi dimensioni su un collegamento lento, è possibile trasferire i file di piccole dimensioni in questo modo:

rsync -a --max-size = 100K / var / www / there: / var / www /

quindi fai questo per i file di grandi dimensioni:

rsync -a --min-size = 100K --bwlimit = 100 / var / www / there: / var / www /

rsync ha molte opzioni utili per i siti Web. Sfortunatamente, non ha un modo integrato di rilevare aggiornamenti simultanei, quindi è necessario aggiungere logica agli script cron per evitare la sovrapposizione di scritture di file di grandi dimensioni.


10

Uso l'opzione --existing quando provo a mantenere un piccolo sottoinsieme di file da una directory sincronizzato con un'altra posizione.


Grazie! Questo mi ha appena salvato da alcune brutte regole di filtro.
benzado,

8

--rsh è mio.

L'ho usato per cambiare la cifra su ssh in qualcosa di più veloce ( --rsh="ssh -c arcfour") anche per impostare una catena di sshs (consiglio di usarlo con ssh-agent) per sincronizzare i file tra host che non possono parlare direttamente. ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


7
--time-limit

Quando viene utilizzata questa opzione, rsync si arresterà dopo T minuti e uscirà. Penso che questa opzione sia utile quando si risincronizza una grande quantità di dati durante la notte (ore non occupate) e poi si interrompe quando è il momento per le persone di iniziare a utilizzare la rete, durante il giorno (ore occupate).

--stop-at=y-m-dTh:m

Questa opzione consente di specificare a che ora interrompere rsync.

Batch Mode

La modalità batch può essere utilizzata per applicare lo stesso set di aggiornamenti a molti sistemi identici.


Utile! Avevo usato il comando "at" prima di terminare il processo
Lionel,


2
Sfortunatamente queste opzioni non sono disponibili in rsync distribuito con distribuzioni Redhat / Centos o Ubuntu.
IanB

@Lionel: come stai usando atper terminare il processo?
IMTheNachoMan,

6

Se ti stai chiedendo fino a che punto è arrivato un rsync a esecuzione lenta e non hai usato -v per elencare i file mentre vengono trasferiti, puoi scoprire quali file ha aperto:

 ls -l /proc/$(pidof rsync)/fd/*

su un sistema che ha / proc

Ad esempio, rsync è stato appeso per me proprio ora, anche se il sistema remoto sembrava avere ancora un sacco di spazio. Questo trucco mi ha aiutato a trovare il file inaspettatamente enorme che non ricordavo, che non si adattava dall'altra parte.

Mi ha anche fornito informazioni un po 'più interessanti - l'altra estremità apparentemente ha rinunciato, poiché c'era anche un collegamento al socket interrotto:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive è una scelta standard (sebbene non quella predefinita) per i processi di backup, che assicura che la maggior parte dei metadati dai file di origine (autorizzazioni, proprietà, ecc.) vengano copiati.

Tuttavia, se non vuoi usarlo, spesso vorrai comunque includerlo --times, che copierà attraverso i tempi di modifica dei file. Questo rende il prossimo rsync in esecuzione (supponendo che lo stiate facendo ripetutamente) molto più veloce, poiché rsync confronta i tempi di modifica e salta il file se è invariato. Sorprendentemente (almeno per me) questa opzione non è l'impostazione predefinita.


4

Quello che utilizzo di più è sicuramente quello --exclude-fromche ti permette di specificare un file contenente cose da escludere.

Trovo anche --chmodmolto utile perché ti consente di assicurarti che le autorizzazioni finiscano in uno stato desiderabile anche se la tua fonte è incasinata.


4

--backup-dir = date +%Y.%m.%d--delete Stiamo cancellando ma ne facciamo una copia ... per ogni evenienza


4

Il mio è --inplace. Funziona a meraviglia quando il server per i backup esegue ZFS o btrfs e si realizzano snapshot nativi.


3

Naturalmente, c'è anche quello --deleteche rimuove roba dal bersaglio che non può essere trovata nella fonte.



2
--partial 

In caso di interruzioni

--bwlimit=100

Per limitare la larghezza di banda, utile per copiare file di grandi dimensioni, directory


Di che unità è bwlimit? bit al secondo, byte al secondo?
Timo Kähkönen,

@Timo, bwlimit è in KBytes / secondo.
Andrew Ferrier,

1

Se hai rsync configurato come demone sul server, puoi semplicemente sfogliare i moduli condivisi come qualsiasi altro elenco di directory. Quindi puoi vedere quali percorsi sono disponibili e quali no.


1

quando utilizzo GlusterFs abbiamo un collo di bottiglia con file T di dimensioni zero, per la sincronizzazione tra mattone o replica si è verificato un arresto anomalo che è necessario utilizzare --min-size=1per non sincronizzare file vuoti dal server arrestato

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.