Copia solo nuovi file - è possibile? Fondamentalmente vuoi unire due cartelle


14

Ho una cartella su Drive 1 chiamata Music, ed è 100 GB. Ho una cartella su Drive 2 chiamata Music, ed è 116GB. È la versione più aggiornata. Come faccio a copiare la cartella Music da Drive 2 a Drive 1 senza dover riscrivere ogni singolo file?


Quale versione di OS X stai usando?
Nix,

1
Sto usando 10.7.4. Quando copio la cartella da un'unità all'altra, mi viene chiesto se desidero sostituirla. Nessuna opzione di unione.
dallen,

Risposte:


5

L'opzione di unione verrà visualizzata solo se si sta copiando (anziché spostare) la cartella. Assicurati di tenere premuto optionmentre trascini la nuova cartella nella posizione della vecchia cartella. In alternativa, l'utilizzo di + cper copiare la nuova cartella e + vper incollare sulla vecchia cartella dovrebbe offrire l'opzione di unire i file.


Questo sembra ancora scrivere su file che non devono essere riscritti. Usando rsyncinvece
BRogers

Anche se è disponibile l'opzione di unione, a volte non funziona (segnala solo un errore e non fa nulla), specialmente nel caso di cartelle di grandi dimensioni come nel tuo caso. È un altro motivo per cui dovresti usare rsync.
Andrzej Martyna,

24

Questo è un caso d'uso classico per rsync:

rsync -av /source-path/source-dir /destination-path

rsync copierà solo i file nuovi e modificati nella nuova posizione.

È importante capire come funziona una barra finale sull'argomento sorgente. Se c'è una barra finale, il contenuto di / source-path / source-dir verrà copiato nel percorso di destinazione . Se non è presente alcuna barra finale, la stessa directory sorgente verrà copiata nella destinazione e il suo contenuto sarà di un altro livello inferiore nella gerarchia di destinazione.

Quindi, se si desidera replicare un percorso in un altro, includere la barra finale come segue:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/

1
Ottima cattura! E se lo stai facendo da più unità (o ovunque sul tuo computer) e non vuoi scrivere le directory, puoi semplicemente trascinare un'unità (USB esterna o capsula del tempo) o solo una directory specifica e farla aggiungere al comando per te. Basta trascinare la posizione di destinazione nel terminale
BRogers

Amico, grazie mille per aver suggerito la barra finale. Ho speso la nostra riflessione sul perché rsync -av ./foo/bar / vol1 / foo / bar stava copiando tutti i file esistenti. Macchie insanguinate lol !!!
sming

4

AGGIORNARE

Prima installa coreutils per primo. Corri brew install coreutils. Se non hai brewinstallato ... torna a Windows!

Controllare che cp --versionuscite versione cp (GNU coreutils) 8. ^^

Quindi avrai la cpversione corretta e il -uflag funzionerà.


Controlla il cpcomando. Usa man cpe leggi le opzioni. Puoi fare qualcosa del tipo:

cp -r -u ~/source ~/destination

-R, -r , --recursive: copia ricorsivamente le directory
-u , --update: copia solo quando il file SOURCE è più recente del file di destinazione o quando manca il file di destinazione
-p uguale a --preserve = mode, proprietà , timestamps
-v --verbose: spiega cosa si sta facendo

Quindi, se vuoi copiare file dalla tua cartella Download / musica per dire la tua musica / nuova cartella, dovresti fare qualcosa del genere: Ciò unirebbe il contenuto di queste due cartelle e se esistono due file con lo stesso nome e percorso, manterrebbe il il più recente basato sul timestamp.
cp -ruvp ~/Downloads/music/* ~/Music/new/


Sei sicuro che l'opzione -u funzioni con il comando cp in OSX? Ricevo il messaggio "cp: illegale opzione - u" in Sierra. Sembra che non tutti i comandi siano uguali a quelli in Linux.
OMA,

Prova il comando cp --help e vedi se l'opzione è disponibile. Oppure controlla cp --version e assicurati che sia aggiornato. Sto usando: cp (GNU coreutils) 8.27
drew7721

Purtroppo, -u non è un flag valido per cp su OS X. Sarebbe molto conveniente averlo!
Per Quested Aronsson il

Purtroppo questa risposta non è corretta.
William Cerniuk,

utilizzare brew install coreutilsper ottenere la cpversione corretta .
Drew7721

0

Non sono sicuro del motivo per cui il pulsante Lion Merge predefinito non viene visualizzato per me. Ma ho finito per usare ditto. Trovato qui: https://superuser.com/a/221599/102789


1
STAI ATTENTO! idem non mantiene i file più recenti, sovrascrive sempre la destinazione con l'origine. Se il file sorgente è più vecchio, eliminerà il nuovo file e lo sostituirà con un file più vecchio
FrancescoMM,

esatto - avvertimento molto importante di FrancescoMM, usa rsync
Andrzej Martyna
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.