Como posso copiar arquivos em uma pasta em outra pasta no terminal Linux

Como posso copiar arquivos em uma pasta em outra pasta no terminal Linux
Quando você precisa copiar o conteúdo de um diretório para outro, no caso do Linux, há muitas ferramentas à sua disposição. Qual usa usar? Depende da situação e da preferência pessoal. Neste artigo, examinaremos as maneiras de copiar o conteúdo do arquivo de uma pasta para outra no terminal. Isso apresentará algumas das escolhas populares para diferentes situações.

Cópia de arquivo no terminal

Copiar o conteúdo de um diretório em outro é uma tarefa muito simples. No entanto, você tem muitas opções de fazer isso. O Linux é abençoado com inúmeras ferramentas para manipular arquivos e diretórios através de várias ações.

Todas as etapas são demonstradas no Ubuntu 18.04.1. No começo, vamos criar um punhado de arquivos fictícios para trabalhar.

$ mkdir -v dir_a

Agora, vamos criar os arquivos fictícios usando o toque.

$ Touch Dummy 1… 10

Vamos criar outra pasta dentro de DIR_A com um punhado de arquivos fictícios.

$ mkdir -v dir_b
$ Touch Dummy 1… 10

Agora, toda a estrutura do diretório dir_a se parece com isso.

$ árvore dir_a

Comando cp

O cp O comando é, de longe, a ferramenta mais comum para copiar arquivos. É uma ferramenta que vem por padrão com qualquer sistema Linux. Copiar arquivos e diretórios são o único objetivo do CP. Ele suporta uma ampla gama de recursos.

Esta é a estrutura básica do cp comando.

$ cp

Por exemplo, vamos fazer uma cópia do Dummy1 Arquivo com o nome dummy1_copy.

$ CP DUMMY1 DUMMY1_COPY

Agora, vamos tentar copiar vários arquivos de uma só vez. Para tal operação, a CP exige que o destino seja um diretório. Aqui, estarei usando a expressão do curinga para pegar todo o fictício arquivos e colocá -los no ~/Downloads diretório.

$ CP Dummy* ~/Downloads

Que tal copiar um diretório?

$ cp -vr dir_a dir_a_copy

Aqui, usamos duas bandeiras diferentes. Vamos ter um rápido colapso deles.

  • -R: significa um recursivo cópia (incluindo qualquer arquivo oculto). Bandeira obrigatória se a cópia envolve um diretório inteiro ou mais.
  • -V: significa detalhado. A ferramenta CP produzirá cada ação que está executando.

Quer seguir os links simbólicos? Adicione a bandeira "-l".

$ cp -lvr

Digamos que o diretório de destino já tenha um arquivo com o mesmo nome. Se você deseja evitar a sobrescrição, use a bandeira "-n". Garantirá que, em caso de conflito, o CP não substitua o arquivo.

$ cp -nv

Se você está realizando uma ação sensível de cópia/colar, é melhor ter o melhor controle sobre o que acontece, certo? Nesse caso, use a bandeira "-i". Significa um modo interativo em que a CP solicitará confirmação toda vez que surgir um conflito.

$ cp -i

Se você está mais interessado, a página do homem é sempre uma das melhores documentações. Saiba mais sobre CP.

$ MAN CP

comando mv

A ferramenta MV é semelhante à ferramenta CP. No entanto, em vez de copiar, o MV move arquivos e diretórios. Comparado ao CP, é mais simples.

A estrutura de comando do MV é semelhante ao CP.

$ mv

Para mover o conteúdo de DIR_A para DIR_A_COPY, Execute o seguinte comando.

$ MV -V DIR_A/ DIR_A_COPY

Aqui, a bandeira "-v" é para detalhado modo. Se você quiser mover apenas o conteúdo de dir_a, use o seguinte. Nesse caso, o diretório de destino deve existir de antemão.

$ MV -V DIR_A/* DIR_A_COPY

A ferramenta MV não tem muito com o que trabalhar. Para todas as opções disponíveis, consulte a página do homem.

$ MAN MV

Comando rsync

Esta é uma das ferramentas mais populares e poderosas para cópia de arquivos, usada principalmente para backup. Ele mantém a capacidade de copiar arquivos sobre uma conexão remota. Ao contrário de CP e MV, ele também vem com uma tonelada de opções avançadas de cópia de arquivo que oferecem a maior personalização de seu comportamento.

O RSYNC é famoso principalmente por seu algoritmo delta-transferido que reduz drasticamente a quantidade de dados que precisam ser trocados. No caso de sincronização remota, isso economiza muita largura de banda.

O RSYNC geralmente não é pré-instalado em nenhuma distro Linux. No entanto, devido à sua popularidade, agora está disponível em todas as principais distos Linux. Use PKGs.org para descobrir o pacote rsync para sua distro. Supondo que você tenha instalado o RSYNC, vamos começar.

Primeiro, a estrutura de comando básica do rsync. É bem parecido com CP.

$ rsync

Antes de começar, aqui estão um punhado de argumentos populares do RSYNC.

  • -v: Modo verboso, produz qualquer ação que esteja sendo executada na tela do console.
  • -vv: Modo detalhado com mais detalhes
  • -r: Modo recursivo, deve estar presente se copiar diretórios
  • -z: Compressa dados
  • -a: Dados de arquivo
  • -n: Run a seco, deve ser executado em combinação com o modo detalhado. Simplesmente gera as ações se o comando fosse executado para real
  • -excluir: Exclua o (s) arquivo (s) e diretório (s) no diretório de destino se o diretório de origem não os contê -los mais
  • -Sem arquivo: Força o RSYNC a usar seu algoritmo de transmissão Delta, não importa o que. Útil em cenários em que você deve garantir a menor quantidade de dados de gravação.
  • -Remover-Source-File: Excluir arquivos de origem após copiar.

Vamos verificá -los em ação. Primeiro, a cópia do diretório. Execute o seguinte comando.

$ rsync -vr DIR_A/ DIR_A_COPY

Para uma saída mais detalhada, vamos usar a bandeira "-vv".

$ rsync -vv -r DIR_A/ DIR_A_COPY

Agora, vamos conferir a parte legal do rsync. Discutimos como o RSYNC copia de forma inteligente apenas os arquivos modificados, salvando largura de banda e gravação de disco. É hora de conferir em ação. Neste exemplo, a ação será realizada dentro do DIR_A diretório.

$ rsync -vv-não-whole-fil-File* DIR_B/

Apesar da transmissão delta ativada, o RSYNC pode não aplicá-lo quando você está realizando transferência de dados local.

Agora, vamos conferir o recurso de corrida a seco. Antes de executar qualquer comando rsync de verdade, é sempre importante que você o teste de antemão. É aqui que entra a corrida a seco. O RSYNC produzirá o que acontecerá se o comando realmente executar.

$ rsync -Anvr DIR_A/ DIR_A_COPY

O RSYNC também pode trabalhar com diretórios remotos, sem problemas. Tudo o que precisa é uma conexão SSH adequada com as chaves ssh configuradas.

$ rsync

Quer realizar uma operação de movimentação? Para colocar isso na perspectiva do RSYNC, o RSYNC copiará o conteúdo do diretório de origem e, em seguida, excluirá o conteúdo de origem.

$ rsync -v--remove-fois

Confira o resultado da operação.

$ árvore dir_a
$ árvore dir_a_copy

Pensamentos finais

O CP e o RSYNC são as ferramentas mais comuns que você pode usar para copiar arquivos em uma pasta no terminal Linux. Ambos também são realmente bons para scripts. Apenas certifique -se de testar as funções antes da implementação.

Aproveitar!