Copie arquivos sem perder as permissões de arquivo / pasta

36

Como posso copiar arquivos / pastas de um computador ubuntu em um sistema de arquivos ext4 para outro computador ubuntu que também esteja em um sistema de arquivos ext4, usando um pendrive que usa um sistema de arquivos vfat sem perder as permissões de arquivo?

Eu tentei o ctrl-c básico do computador de origem, depois o ctrl-v para o usb, o ctrl-c do usb e o ctrl-v para o computador de destino, e nenhuma das permissões de arquivo / pasta permanece intacta.

oshirowanen
fonte
vfatnão suporta permissões de sistema de arquivos unix. Você precisará armazená-los em um tarball, ou algo semelhante, se quiser preservá-los.
Alex L.
por que não rsync, como sugeri?
precisa

Respostas:

56

Você pode criar um arquivo tar da fonte, copiá-lo para o outro computador usando a unidade USB e extraí-lo lá. O Tar preserva as permissões de arquivo.

1 - No computador de origem:

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

2 - Copie put_your_name_here.tar.gzpara a unidade USB e depois para o outro computador

3 - No computador de destino:

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

tar irá recriar a estrutura de pastas arquivadas com todas as permissões intactas.

Esses comandos arquivam o conteúdo da pasta de origem e os extraem para a pasta de destino. Se você deseja copiar a própria pasta, deve, na etapa 1:

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

O mesmo mecanismo pode ser usado para arquivos únicos.


Se você pode se conectar de um computador para outro usando ssh, @siddharthart answer ( rsync) pode ser mais prático.

sierrasdetandil
fonte
Não esqueça a -psinalização tarpara garantir que as permissões sejam preservadas.
haziz
@haziz Na verdade, -pnão é realmente necessário, veja meu comentário na resposta do @ mikewhatever. O -ztambém não é necessário ao desenrolar, pois taré capaz de descobrir o tipo de compactação em si, a menos que seja uma versão antiga. Incluir as bandeiras no comando não dói, difícil.
S123 #
3
Eu não acho que você pode contar com esse comportamento. Entre aspas na página man tar "-p, --preserve-permissions, --same-permissions extrai informações sobre permissões de arquivo (padrão para superusuário)", este parece ser o comportamento padrão somente se tar for invocado como superusuário. Não contaria com isso como comportamento padrão. Eu também sempre explicitamente explicito o -zsinalizador ao compactar ou descompactar (ou -jse estiver usando o bzip2).
haziz
A criptografia (básica) poderia ser facilmente adicionada? (Eu acho que haveria muitas maneiras de fazer isso, mas eu estou pensando, mas se isso for feito através da linha de comando, como a senha / chave de criptografia / frase secreta será fornecida? como o sudo por senha, onde há chave-cursos são feitos visível)?
noz sobre natty
tarsofre de um problema muito sério - ele engasga com caminhos com mais de 100 caracteres.
Nathan Osman
12

Você pode tentar rsynccom o -asinalizador manter todas as permissões durante a cópia. Não estou ciente de uma solução mais simples, mas eu a tinha usado para um propósito no passado.

O Rsync oferece suporte brilhante para cópias repetidas, atualização de pastas etc., mantendo-se incrivelmente rápido.

SiddharthaRT
fonte
6
Eu gosto rsync(adoro, de fato: -]), mas as permissões do arquivo ext4 serão perdidas se o dispositivo de destino estiver no formato vfat, como oshirowanen descrito. A tarsolução é melhor neste caso.
yuric 31/01
6

Eu acho que tarar e desarmar deve funcionar em arquivos e diretórios.

para alcatrão:

tar cvpfz /target.tar.gz /source/

desarmar:

tar xvpfz /source/

A pbandeira representa --preserve-permissions.

Você deve ver man tarpara mais informações.

mikewhatever
fonte
Acabei de fazer um teste rápido para ter certeza e -pnão é necessário - o tar preserva as permissões por padrão, pelo menos quando o usuário possui os arquivos que estão sendo arquivados / extraídos.
S123 #
2
É verdade, mas você não nos disse quais arquivos deseja copiar e não tive motivos para assumir nada sozinho.
Mikewhatever