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.
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.
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!