Sincronizza due cartelle locali in bash


23

Ho una grande cartella "X" nella mia directory home e una copia obsoleta di questa su un'unità flash - Y. Di cosa si tratta l'analogo rm Y; cp X Y, ma senza sovrascrivere i file già esistenti?

Risposte:


26

Ci sono molte più proprietà da sincronizzare rispetto alle citazioni della risposta precedente. Dovresti esaminarli tu stesso:

man rsync

Ma per il tuo problema suggerirei:

rsync -a --delete X Y

In questo modo, il ricevitore (Y) eliminerà qualsiasi file che non sia in X. Assicurati di farlo bene. Utilizzato in modo errato come root può facilmente uccidere il tuo sistema ... :)


1
D'accordo che dovresti stare molto attento con questo. Prova ad aggiungere --dry-run al comando per vedere cosa accadrà senza effettivamente apportare modifiche. Se va bene fai lo stesso comando senza --dry-run
squarecandy il

Una piccola correzione che mi ha portato un po 'per raggiungere: rsync -a --delete X/ Y. Quel piccolo taglio dopo X lo ha fatto funzionare come previsto per me, quindi potrebbe aiutare anche altri. Spiegato qui: abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt

15

Dai un'occhiata a rsync (1) . Ha lo scopo di fare esattamente quello che vuoi.

rsync -av X Y

Supporta la copia remota, tramite il proprio protocollo o SSH, ma può anche essere utilizzato localmente.

A seconda del comportamento esatto che desideri, potresti anche voler passare l' --updateopzione. Questo dirà a rsync di non sovrascrivere i file che già esistono sulla destinazione e sono più recenti di quelli nella fonte.

Se vuoi rimuovere file extra (cioè file che esistono in Y, ma non in X) puoi aggiungere l' --deleteopzione.


Ma non rimuoverà i file, che rimossi in X, mentre lo rm Y; cp X Yfarà.

Per rimuovere i file rimossi da X, utilizzare l'opzione --delete.
csonuryilmaz,

0

Prova a usare rsnyc, possibilmente con il seguente comando:

rsync -avzu /home/x /y

-u = non sovrascrivere un file nella destinazione, se viene modificato


Ma non rimuoverà i file, che rimossi in X, mentre lo rm Y; cp X Yfarà.

0

Penso che alcune delle funzionalità che stai cercando nell'opzione -u (aggiorna) esistano effettivamente in questa opzione:

"--ignore-esistente" - salta l'aggiornamento dei file esistenti sul ricevitore

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.