script bash Rsync e file di collegamento duri
Domanda
Sto creando uno script bash per il backup i miei file con rsync.
I backup provengono tutti da una singola directory. Voglio solo i file nuovi o modificati per eseguire il backup.
Al momento, sto dicendo rsync per il backup della directory, e per controllare i file rispetto all'ultimo backup.
Il modo in cui sto facendo questo è
THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current
Sono abbastanza sicuro che ho la sintassi corretta per questo. Ogni backup controllerà contro la cartella "corrente", e caricare solo come controlo. Sarà quindi eliminare la cartella corrente, e ricreare il collegamento simbolico al più nuovo di backup che ha appena fatto.
sto ottenendo un errore quando ho eseguito lo script:
rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"
=> /Backup/Current/dgs1200series_manual_310.pdf fallito: Operazione non supportata (45)
Il sistema operativo host è in esecuzione HFS file system, che supporta il collegamento rigido. Sto cercando di capire se qualcosa non sta sostenendo questo, o se ho un problema nel mio codice.
Grazie per qualsiasi aiuto
Modifica:
Sono in grado di creare un collegamento fisso sulla mia macchina locale. Sono anche in grado di creare un collegamento fisso sul server remoto (quando connesso localmente) Io non sono in grado di creare un collegamento fisso sul server remoto quando montato tramite AFP. Anche se sono presenti entrambi i file sul server.
sto indovinando questa è una limitazione di AFP.
Soluzione
Due cose dalla pagina man stare fuori che sono la pena di verificare:
Se del file non sono link, controllare i loro attributi. Anche verificare se alcuni attributi sono sempre costretti al di fuori di rsync controllo, ad un'opzione che squishes radice di un singolo supporto utente o monta un'unità rimovibile con la proprietà generico (ad esempio come OS X di “Ignora proprietà su questo volume” l'opzione).
e
Si noti che le versioni di rsync prima di 2.6.1 aveva un bug che poteva Prevenire --link-dest di funzionare correttamente per un non-super-user quando è stato specificato -o (o impliciti in -a). È possibile lavorare-around questo bug evitando l'opzione -o durante l'invio di un vecchio rsync.
Avete il "Ignora proprietà" opzione attivata? Quale versione di rsync
avete?
Inoltre, avete cercato di creare manualmente un collegamento reale simile utilizzando ln
nella riga di comando?
Altri suggerimenti
Nel caso in cui la riga di comando è solo un esempio: assicurarsi di specificare sempre il link-dest directory con un assoluto percorso! Questo è qualcosa che mi ha portato un po 'di tempo per capire ...
Non so se questo è lo stesso problema, ma so che rsync non può sincronizzazione un file quando la destinazione è una partizione FAT32 e il nome del file ha un ":" (due punti) in esso. [La fonte filesystem ext3 è, e la destinazione è FAT32]
Provare a riconfigurare il comando date
in modo che non fa uso di due punti e vedere se questo fa la differenza.
per es.
THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`