2009-06-03 9 views
17

È possibile specificare un intervallo di tempo in modo che rsync funzioni solo su file modificati di recente.Come posso utilizzare rsync per eseguire il backup dei file modificati in un periodo recente?

Sto scrivendo uno script per il backup dei file aggiunti di recente su SSH e rsync sembra una soluzione efficiente. Il mio problema è che le mie directory di origine contengono un enorme arretrato di vecchi file che non ho alcun interesse a fare il backup.

L'unica soluzione che ho trovato finora è stata una ricerca con ctime per generare un file --file dal file. Funziona, ma devo gestire alcune vecchie installazioni con versioni di rsync che non supportano --files-from. Sto valutando la possibilità di generare - includere - i pattern allo stesso modo, ma mi piacerebbe trovare qualcosa di più elegante.

+0

Dopo aver eseguito il tuo rsync iniziale la volta successiva che lo chiami, trasferirà solo i file nuovi o modificati. Questo è lo scopo di rsync. – lothar

+0

Un'altra opzione potrebbe essere quella di riorganizzare il layout della directory in modo che i file che non si desidera eseguire il backup si trovino in un percorso diverso, in modo da poter inserire tale percorso nell'elenco di ignora per rsync. – lothar

+0

Stavo per suggerire l'uso dell'opzione '-t' di rsync, ma questo non fa esattamente quello che è stato chiesto – Hasturkun

risposta

26

Sembra che è possibile specificare i comandi della shell negli argomenti a rsync (vedi Remote rsync executes arbitrary shell commands)

così mi è stato in grado di limitare con successo i file che rsync guarda utilizzando:

rsync -av remote_host:'$(find logs -type f -ctime -1)' local_dir 

Questo cerca eventuali file modificati nell'ultimo giorno (-ctime -1) e quindi li rimanda a local_dir.

Non sono sicuro se questa funzionalità è di progettazione ma sto ancora scavando nella documentazione.

+0

Volevo semplicemente eliminare una riga che è appena diventata utile per uno script di importazione dei dati che sto utilizzando. Grazie! – Matthew

+1

Attenzione per questo però; se ci sono molti file che corrispondono, i risultati della ricerca incorporata possono essere eseguiti nel limite di lunghezza della riga di comando della shell. Mi è successo. – GaryO

+0

Ciò non manterrà la struttura delle directory – carlosvini

1

Come creare una directory temporanea, creare collegamenti simbolici o collegare in modo permanente i file, quindi rsinciderlo?

2

Perché non limitarsi a fare il backup del backup dell'intera directory una sola volta e sfruttare il backup incrementale fornito da rsync e rdiff e dai suoi cugini, non si sprecherà spazio su disco in cui viene eseguito il backup perché saranno essere perennemente invariato.

Il backup dell'intera operazione è più semplice e presenta un rischio sostanzialmente inferiore di errori. Cercando di eseguire il backup selettivo di alcuni file e non di altri è una ricetta per non eseguire il backup di ciò che è necessario senza rendersene conto, per poi essere masterizzati quando non è possibile ripristinare un file critico.

In caso contrario, è necessario riorganizzare la directory di origine in modo da ridurre il processo decisionale nello script di backup.

+0

Normalmente sarei d'accordo sul rischio di errori, ma non avrò mai alcun uso per i file più vecchi (registri e altri record che non cambieranno mai). Vorrei solo prendere il calore, ma il pensiero di dover scaricare e rielaborare regolarmente diversi gigabyte di bloat indesiderato è ciò che ha spinto questa domanda in primo luogo. La riorganizzazione è probabilmente la soluzione: non posso modificare la struttura esistente ma posso impostare una directory temporanea come suggerito da Hasturkun. – Ken

+0

Per me, voglio trasferire da remoto a locale, elaborare i file, quindi eliminare quelli vecchi (mtime +30) dal locale per risparmiare spazio. La prossima volta che Naive rsync scarica nuovamente i vecchi perché ora mancano sul locale. – GaryO

1

Posso suggerire di rilasciare rsync e guardare rdiff-backup?

+0

Grazie. Diamo un'occhiata: l'ho già esaminato, ma il problema di compatibilità CIFS mi ha bloccato. (http://rdiff-backup.nongnu.org/FAQ.html#cifs) – Ken

Problemi correlati