Differenza tra cp -r e cp -a


174

Sto cercando la differenza tra cp -re cp -a. Che cosa significa "ricorsivo" in termini di copia di file da una cartella?


62
alcune persone stanno cercando una spiegazione migliore per le pagine man perché non è sempre chiaro cosa significasse la descrizione. Ho dovuto scavare molte volte e testare / sperimentare per capire cosa sta realmente succedendo con un comando particolare. La pagina man di grep può confondermi ogni giorno.
Joe,

2
Riesco a capire la tua frustrazione, ma il modo migliore per imparare è provare e sperimentare.
tripledes

37
OPPURE impara ponendo domande qui, ottenendo la risposta in un modo che capisci, e quindi hai un miglior senso di comprensione di cosa e come testare e sperimentare. Tieni presente che molto spesso funziona per te, non funziona per me, ecc. Ecc.
Will Lanni

Risposte:


198

Ricorsivo significa che cpcopia il contenuto delle directory e se una directory ha delle sottodirectory, anche queste vengono copiate (ricorsivamente). Senza -R, il cpcomando salta le directory. -rè identico a quello -Rsu Linux, differisce in alcuni casi limite in alcune altre varianti unix.

Per impostazione predefinita, cpcrea un nuovo file con lo stesso contenuto del vecchio file e le stesse autorizzazioni ma limitato da umask ; la copia è datata dal momento della copia e appartiene all'utente che la copia. Con l' -popzione, la copia ha lo stesso tempo di modifica, lo stesso tempo di accesso e le stesse autorizzazioni dell'originale. Ha anche lo stesso proprietario e gruppo dell'originale, se l'utente che esegue la copia ha l'autorizzazione per creare tali file.

L' -aopzione significa -Re -p, oltre a poche altre opzioni di conservazione. Tenta di effettuare una copia il più vicino possibile all'originale: stesso albero di directory, stessi tipi di file, stessi contenuti, stessi metadati (tempi, autorizzazioni, attributi estesi, ecc.).


35
Fondamentalmente, a meno che tu non voglia qualcosa di speciale, non hai mai bisogno -rperché -a(per aottenere) è sempre il più sicuro e probabilmente quello che ti aspettavi che accadesse.
AMS

2
Sì, è un buon riassunto. L'unico motivo comune da usare -rè perché sei su una variante unix diversa da Linux che non ha -a, e in genere dovresti usare cp -rp. Or rsync -a.
Gilles,

a volte i permessi permetteranno -r ma non -a
DrCord il

Non -r, non -R non funziona in Ubuntu 18
Arkady il

16

L'opzione -r o -R per "ricorsivo" significa che copierà tutti i file inclusi i file all'interno delle sottocartelle.

L'opzione -a elencata è la stessa di -dR, il che significa che conserverà i collegamenti e copierà il contenuto delle sottodirectory. Ciò che significa preservare i collegamenti è che non seguirà i collegamenti poiché sta copiando ricorsivamente.

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.