GNU/Linux >> Linux Esercitazione >  >> Linux

Come mantenere intatte la proprietà e le autorizzazioni dei file durante la copia di file o directory

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.


Linux
  1. Come copiare le autorizzazioni e la proprietà dei file su un altro file in Linux

  2. Come eliminare file e directory in Linux dalla riga di comando

  3. Linux chmod and chown - Come modificare le autorizzazioni e la proprietà dei file in Linux

  4. Come estrarre i file .gz e .tar.gz in Linux

  5. Come elencare le dimensioni dei file ricorsivi di file e directory in una directory?

Come copiare file e directory in Linux

Come spostare file e directory in Linux (comando mv)

Come sincronizzare file e directory utilizzando Zaloha.sh

Come visualizzare e creare file e directory nascosti in Linux

Come rinominare file e directory in Linux

Come copiare file e directory nel terminale Linux