L'altro giorno ho pianificato di eseguire il backup di alcuni dati dal mio sistema desktop Ubuntu su un'unità USB esterna. Dopo aver trasferito tutti i dati sull'unità esterna, ho notato che il proprietario e le autorizzazioni dei file e delle directory sull'origine e sulla destinazione sono diversi. Ma volevo mantenere intatti gli attributi dei file esistenti (come proprietario, gruppo e timestamp ecc.) in entrambe le posizioni. Dopo una rapida ricerca su Google e sfogliando le pagine man del comando "cp", ho scoperto che possiamo mantenere intatte la proprietà e le autorizzazioni dei file durante la copia di file e directory su Linux. Se ti sei mai trovato in una situazione come questa, ecco una rapida soluzione per farlo.
Mantieni intatte la proprietà e le autorizzazioni dei file durante la copia di file o directory su Linux
Il pc comando ha un'opzione per copiare file e directory ma conserva i tempi di modifica, i tempi di accesso e le modalità dal file originale.
$ cp -rp ~/data /media/sk/sk_seagate/data/
Qui sto copiando il contenuto di una cartella denominata "data" sul mio disco esterno.
Dal cp pagine man del comando:
-p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all
Quindi, se usi -p flag, conserverà tutti gli attributi del file esistenti come modalità, proprietà e timestamp dal file originale.
E il "-r" flag è usato qui per copiare le directory in modo ricorsivo. Significato:copierà le directory e le sue sottodirectory e file.
In alternativa, puoi utilizzare -a bandiera. Include il flag -r e conserva tutto, come link, xattr, attributi SELinux ecc.
$ cp -a ~/data /media/sk/sk_seagate/data/
Dalle pagine man del comando cp:
-a, --archive same as -dR --preserve=all
Per verificare se le autorizzazioni e la proprietà del file sono intatte, utilizza getfacl comando su entrambe le posizioni, ovvero sorgente e destinazione.
$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/
Se desideri copiare file dal sistema locale a un sistema remoto nella stessa rete, puoi utilizzare "scp" comando per trasferire file da un sistema all'altro come di seguito.
$ scp -rp ~/data [email protected]:/home/senthil/
Il comando precedente copierà la cartella dei contenuti denominata "data" dal mio sistema locale a un sistema remoto. Qui, 192168.225.22 è l'indirizzo IP del mio sistema remoto e "senthil" è il nome utente del sistema remoto.
Controlla i permessi del file e la proprietà della directory "data" su entrambi i sistemi usando il comando "getfacl".
Per prima cosa controlliamo gli attributi del file della directory "data" sul sistema locale:
$ getfacl data/
Risultato di esempio:
# file: data/ # owner: sk # group: sk user::rwx group::rwx other::r-x
Quindi, controlla gli attributi del file della directory "data" sul sistema remoto. Puoi accedere direttamente al sistema remoto e controllare gli attributi fie di una directory remota tramite il comando ssh come di seguito.
$ ssh [email protected] getfacl data
Esempio di output:
[email protected]'s password: # file: data # owner: senthil # group: senthil user::rwx group::rwx other::r-x
Come puoi notare negli output di cui sopra, le informazioni sul proprietario e sul gruppo (es. Senthil) sono diverse nel mio sistema remoto. Perché il -p flag of scp comando non conserva tutte le autorizzazioni.
Dalle pagine man del comando scp:
-p Preserves modification times, access times, and modes from the original file.
È chiaro che il -p flag conserverà solo i tempi di modifica, i tempi di accesso e le modalità del file originale, ma non la proprietà . In questi casi, puoi creare un nome utente comune su entrambi i sistemi e provare il comando precedente per portare la stessa proprietà e le stesse autorizzazioni di file su sistemi diversi. Oppure usa semplicemente il comando "chown" sul sistema di destinazione per cambiare la proprietà.
Per maggiori dettagli, fare riferimento alle pagine man dei comandi cp e scp.
$ man cp
$ man scp
Lettura consigliata:
- Come copiare file e modificare contemporaneamente la proprietà e le autorizzazioni
Spero che questo aiuti.