Articles

Como copiar arquivos e diretórios em Linux

copiar arquivos e diretórios é uma das tarefas mais comuns que você vai executar ao trabalhar na linha de comandos. Existem vários comandos para copiar arquivos em Linux, com cp e rsync sendo as ferramentas mais amplamente utilizadas.

é prática comum usar o comando cp para copiar ficheiros e rsync para copiar directórios.

para poder copiar ficheiros e directórios, deverá ter pelo menos permissões de leitura no ficheiro de origem e permissões de escrita na pasta de destino.

copiar arquivos com o comando cp #

em sistemas operacionais Linux e Unix, o comando cpé usado para copiar arquivos e diretórios.

O caso de utilização mais simples é copiar um ficheiro na pasta de trabalho actual. Por exemplo, para copiar um ficheiro chamado file.txt para um ficheiro chamado file_backup.txt na pasta actual, você iria executar o seguinte comando:

cp file.txt file_backup.txt

Se o ficheiro de destino existir, será substituído. Para obter uma linha de confirmação antes de substituir os arquivos, use a opção -i.

cp -i file.txt file_backup.txt

por omissão, ao usar o comando cp para copiar um ficheiro, o novo ficheiro será propriedade do utilizador que executa o comando. Use a opção-p para preservar o modo de arquivo, propriedade e datas:

outra opção que pode ser útil é-v. Ao usar esta opção, o comando imprime o que está a ser feito:

cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'

copie um ficheiro para uma pasta #

para copiar um ficheiro para uma pasta, indique a localização absoluta ou relativa da pasta. Quando a pasta de destino é omitida, o ficheiro é copiado para a pasta actual.

no exemplo seguinte, estamos a copiar o ficheiro file.txt para o /backup directório:

cp file.txt /backup

ao indicar apenas o nome da pasta como destino, o ficheiro copiado terá o mesmo nome que o ficheiro original.

Se você deseja copiar o arquivo com um nome diferente, você precisa especificar o nome do arquivo desejado:

cp file.txt /backup/new_file.txt

O comando acima irá copiar o arquivo para o diretório especificado como o new_file.txt.

copiar vários ficheiros #

para copiar vários ficheiros e pastas de uma vez, indique os nomes dos ficheiros e pastas de origem seguidos com a pasta de destino como último argumento:

cp file.txt dir file1.txt file2.txt dir1

ao copiar vários ficheiros, o destino deve ser uma pasta.

o comando cp também lhe permite usar a correspondência de padrões. Por exemplo, para copiar todos os .png arquivos do diretório atual para o /backup diretório, você usaria:

cp *.png /backup

Copiar Diretórios com o Comando cp #

Para copiar um diretório, incluindo todos os seus arquivos e subdiretórios, use o -R ou -r opção. No exemplo a seguir, estamos copiando o diretório PicturesPictures_backup:

cp -R Pictures Pictures_backup

O comando acima irá criar o diretório de destino e recursivamente copie todos os arquivos e subdiretórios da origem para o diretório de destino.

Se a pasta de destino já existir, a própria pasta de origem e o seu conteúdo são copiados para a pasta de destino. Para copiar apenas os ficheiros e sub-pastas, mas não a pasta de destino, use a opção -T :

cp -RT Pictures Pictures_backup

as opções utilizadas na cópia de ficheiros também podem ser usadas na cópia de pastas. A principal diferença é que ao copiar diretórios, você precisa usar a opção -R.

copiar arquivos e diretórios com o comando rsync #

rsync é um utilitário de linha de comando rápido e versátil que sincroniza arquivos e diretórios entre dois locais. Ele pode ser usado para copiar arquivos para locais locais e remotos.

rsync inclui muitas opções que controlam todos os aspectos de seu comportamento

A opção mais útil é -a que recursivamente os diretórios de cópia, transferência especiais e dispositivos de bloco e preservar links simbólicos, horas de modificação, de grupo, propriedade e permissões.

Para copiar um único arquivo a partir de um para outro local, você deve executar o seguinte comando:

rsync -a file.txt file_backup.txt

Se o arquivo de destino existe, rsync irá substituí-lo.

o mesmo comando pode ser usado para copiar uma pasta:

rsync -a /var/www/public_html/ /var/www/public_html_backup/

rsync ameaça as pastas de origem que terminam com uma barra final / diferentemente. Se adicionar uma barra final na pasta de origem, o comando irá copiar apenas o conteúdo da pasta de origem para a pasta de destino. Quando a barra final é omitida, rsync copiará a pasta de origem dentro da pasta de destino. A opção mais segura é sempre incluir a barra final / no destino e na fonte.

Para saber mais sobre rsync verifique os seguintes artigos:

  • Como Usar o Rsync para Locais e Remotos, Transferência de Dados e Sincronização
  • Como Excluir Arquivos e Diretórios com Rsync

Conclusão #

temos mostrado como copiar arquivos e diretórios no Linux e sistemas baseados em Unix, usando o cp e rsync utilitários.