GNU/Linux >> Znalost Linux >  >> Linux

Jak zachovat vlastnictví a oprávnění k souborům při kopírování souborů nebo adresářů

Onehdy jsem plánoval zálohovat některá data z mého desktopového systému Ubuntu na externí USB disk. Poté, co jsem přenesl všechna data na externí disk, všiml jsem si, že vlastník a oprávnění souborů a adresářů na zdrojovém a cílovém místě se liší. Chtěl jsem však zachovat stávající atributy souborů (jako je vlastník, skupina a časové razítko atd.) nedotčené na obou umístěních. Po rychlém vyhledávání Googlem a procházení manuálových stránek příkazu „cp“ jsem zjistil, že při kopírování souborů a adresářů v systému Linux můžeme zachovat vlastnictví a oprávnění k souborům nedotčená. Pokud jste se někdy dostali do podobné situace, zde je rychlé řešení, jak to udělat.

Při kopírování souborů nebo adresářů v systému Linux ponechte vlastnictví a oprávnění k souborům nedotčené

cp příkaz má možnost kopírovat soubory a adresáře, ale zachovává časy úprav, časy přístupu a režimy z původního souboru.

$ cp -rp ~/data /media/sk/sk_seagate/data/

Zde zkopíruji obsah složky s názvem „data“ na můj externí disk.

Z cp manuálové stránky příkazu:

-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

Pokud tedy použijete -p příznak, zachová všechny existující atributy souboru, jako je režim, vlastnictví a časová razítka z původního souboru.

A "-r" příznak se zde používá pro rekurzivní kopírování adresářů. Význam - zkopíruje adresáře a jejich podadresáře a soubory.

Případně můžete použít -a vlajka. Obsahuje příznak -r a zachovává vše, jako jsou odkazy, xattr, atributy SELinux atd.

$ cp -a ~/data /media/sk/sk_seagate/data/

Z manuálových stránek příkazu cp:

-a, --archive
              same as -dR --preserve=all

Chcete-li ověřit, zda jsou oprávnění k souboru a vlastnictví neporušené, použijte getfacl příkaz na obou místech, tj. na zdroji a cíli.

$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/

Pokud chcete kopírovat soubory z místního systému do vzdáleného systému ve stejné síti, můžete použít "scp" příkaz pro přenos souborů z jednoho systému do druhého, jak je uvedeno níže.

$ scp -rp ~/data [email protected]:/home/senthil/

Výše uvedený příkaz zkopíruje složku s obsahem s názvem „data“ z mého místního systému do vzdáleného systému. Zde je 192168.225.22 IP adresa mého vzdáleného systému a "senthil" je uživatelské jméno vzdáleného systému.

Zkontrolujte oprávnění k souboru a vlastnictví adresáře "data" na obou systémech pomocí příkazu "getfacl".

Nejprve nechte zkontrolovat atributy souboru adresáře "data" v místním systému:

$ getfacl data/

Ukázkový výstup:

# file: data/
# owner: sk
# group: sk
user::rwx
group::rwx
other::r-x

Dále zkontrolujte atributy souboru adresáře "data" na vzdáleném systému. Můžete se přímo přihlásit do vzdáleného systému a zkontrolovat atributy fie vzdáleného adresáře pomocí příkazu ssh, jak je uvedeno níže.

$ ssh [email protected] getfacl data

Ukázkový výstup:

[email protected]'s password:
# file: data
# owner: senthil
# group: senthil
user::rwx
group::rwx
other::r-x

Jak jste si mohli všimnout ve výše uvedených výstupech, informace o vlastníkovi a skupině (tj. senthil) se v mém vzdáleném systému liší. Protože -p příznak příkazu scp nezachová všechna oprávnění.

Z manuálových stránek příkazu scp:

-p      Preserves modification times, access times, and modes from the original file.

Je jasné, že -p flag zachová pouze časy úprav, časy přístupu a režimy z původního souboru, ale ne vlastnictví . V takových případech můžete vytvořit společné uživatelské jméno na obou systémech a zkusit výše uvedený příkaz přenést stejné vlastnictví a oprávnění k souborům na různých systémech. Nebo jednoduše použijte příkaz „chown“ na cílovém systému ke změně vlastnictví.

Další podrobnosti naleznete v manuálových stránkách příkazů cp a scp.

$ man cp
$ man scp

Doporučené čtení:

  • Jak kopírovat soubory a měnit vlastnictví a oprávnění současně

Doufám, že to pomůže.


Linux
  1. Jak zkopírovat oprávnění a vlastnictví souboru do jiného souboru v Linuxu

  2. Jak kopírovat soubory a měnit vlastnictví, oprávnění současně

  3. Linux chmod and chown – Jak změnit oprávnění a vlastnictví souborů v Linuxu

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak připojit a odpojit souborový systém v Linuxu

  3. Jak odstranit soubory .fuse_hidden*?

  1. Jak změnit oprávnění pro soubory a adresáře

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. Jak vypsat rekurzivní velikosti souborů a adresářů v adresáři?