web-dev-qa-db-ja.com

ファイル/フォルダーのアクセス許可を失うことなくファイルをコピーする

ファイル権限を失うことなく、vfatファイルシステムを使用するUSB​​スティックを使用して、ext4ファイルシステム上のubuntuコンピューターからext4ファイルシステム上の別のubuntuコンピューターにファイル/フォルダーをコピーするにはどうすればよいですか?

ソースコンピューターから基本的なctrl-cを、次にctrl-vをusbに、次にctrl-cをusbに、次にctrl-vをターゲットコンピューターに試してみましたが、ファイル/フォルダーのアクセス許可はそのままです。

36
oshirowanen

ソースのtarアーカイブを作成し、USBドライブを使用してそれを他のコンピューターにコピーし、そこに解凍できます。 Tarはファイルのアクセス権を保持します。

1-ソースコンピューター上:

cd /path/to/folder/to/copy
tar cvpzf put_your_name_here.tar.gz .

2-put_your_name_here.tar.gzをUSBドライブにコピーしてから他のコンピューターにコピーする

3-移行先コンピューター:

cd /path/to/destination/folder
tar xpvzf put_your_name_here.tar.gz

tarは、すべてのアクセス許可をそのままにして、アーカイブされたフォルダー構造を再作成します。

これらのコマンドは、ソースフォルダーのcontentsをアーカイブしてから、宛先フォルダーに抽出します。フォルダー自体をコピーする場合は、ステップ1で行う必要があります。

cd /path/to/parent/folder
tar cvpzf put_your_name_here.tar.gz folder_to_copy

同じメカニズムを単一のファイルに使用できます。


sshを使用して1台のコンピューターから別のコンピューターに接続できる場合、@ siddharthartの回答(rsync)がより実用的です。

56
sierrasdetandil

rsync-aフラグとともに使用して、コピー中にすべてのアクセス許可を維持できます。単純な解決策は知りませんが、過去に目的のために使用していました。

Rsyncは、繰り返しのコピー、フォルダーの更新などを非常に高速にサポートします。

11
SiddharthaRT

風袋引きとその後の解凍は、ファイルとディレクトリの両方で機能するはずです。

タールへ:

tar cvpfz /target.tar.gz /source/

展開する:

tar xvpfz /source/

pフラグは--preserve-permissionsを表します。

詳細については、man tarが表示されます。

6
mikewhatever