Cópia de arquivo no terminal
Copiar o conteúdo de um diretório para outro é uma tarefa muito simples. No entanto, você tem muitas opções para fazer isso. O Linux é abençoado com inúmeras ferramentas para manipular arquivos e diretórios por meio de várias ações.
Todas as etapas são demonstradas no Ubuntu 18.04.1. Em primeiro lugar, vamos criar um punhado de arquivos fictícios para trabalhar.
$mkdir -vdir_A
Agora, vamos criar os arquivos fictícios usando o toque.
$tocarfictício{1..10}
Vamos criar outra pasta dentro de dir_A com um punhado de arquivos fictícios.
$mkdir -vdir_B
$tocarfictício{1..10}
Agora, toda a estrutura do diretório dir_A se parece com isso.
$árvoredir_A
Comando Cp
o cp 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 é o único propósito do cp. Ele oferece suporte a uma ampla gama de recursos.
Esta é a estrutura básica do cp comando.
$cp <opções> <fonte> <destino>Por exemplo, vamos fazer uma cópia do dummy1 arquivo com o nome dummy1_copy .
$cpdummy1 dummy1_copy
Agora, vamos tentar copiar vários arquivos de uma vez. Para tal operação, cp requer que o destino seja um diretório. Aqui, estarei usando a expressão curinga para capturar todos os fictício arquivos e colocá-los no ~ / Downloads diretório.
$cpfictício*~/Transferências
Que tal copiar um diretório?
$cp -vrdir_A dir_A_copy
Aqui, usamos duas bandeiras diferentes. Vamos fazer uma análise rápida deles.
- -r: Significa um recursivo cópia (incluindo qualquer arquivo (s) oculto (s)). Sinalizador obrigatório se a cópia envolver um diretório inteiro ou mais.
- -v: Significa prolixo . A ferramenta cp produzirá cada ação que está executando.
Quer seguir os links simbólicos? Adicione o sinalizador -L.
$cp -Lvr <fonte> <destino>Digamos que o diretório de destino já tenha um arquivo com o mesmo nome. Se você quiser evitar a substituição, use o sinalizador -n. Isso garantirá que, em caso de conflito, o cp não substituirá o arquivo.
$cp -nv <fonte> <destino>Se você estiver executando uma ação sensível de copiar / colar, é melhor ter o melhor controle sobre o que acontece, certo? Nesse caso, use o sinalizador -i. Significa um modo interativo onde o cp pedirá confirmação toda vez que surgir um conflito.
$cp -eu <fonte> <destino>
Se você estiver mais interessado, a página do manual é sempre uma das melhores documentações. Saiba mais sobre cp.
$cara cp
comando mv
A ferramenta mv é semelhante à ferramenta cp. No entanto, em vez de copiar, mv move arquivos e diretórios. Comparado ao cp, é mais simples.
A estrutura de comando de mv é semelhante a cp.
$mv <opção> <fonte> <destino>Para mover o conteúdo de dir_A para dir_A_copy , execute o seguinte comando.
$mv -vdir_A/dir_A_copy
Aqui, o sinalizador -v é para prolixo modo. Se você deseja mover apenas o conteúdo de dir_A, use o seguinte. Neste caso, o diretório de destino deve existir previamente.
$mv -vdir_A/ *dir_A_copy
A ferramenta mv não tem muito com o que trabalhar. Para todas as opções disponíveis, verifique a página do manual.
$cara mv
Comando Rsync
Esta é uma das ferramentas mais populares e poderosas para cópia de arquivos, usada principalmente para backup. Ele possui a capacidade de copiar arquivos por meio de 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 arquivos que oferecem o máximo de personalização de seu comportamento.
Rsync é principalmente famoso por seu algoritmo de transferência delta 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 vem pré-instalado em nenhuma distribuição Linux. No entanto, por causa de sua popularidade, agora está disponível em todas as principais distros Linux. Usar Pkgs.org para descobrir o pacote rsync para sua distro. Supondo que você tenha o rsync instalado, vamos começar.
Primeiro, a estrutura básica de comando do rsync. É bastante semelhante ao cp.
$rsync<opções> <fonte> <destino>Antes de começar, aqui estão alguns argumentos populares de rsync.
- -v : Modo detalhado, exibe qualquer ação que está sendo executada na tela do console.
- -vv : Modo detalhado com mais detalhes
- -r : Modo recursivo, deve estar presente se estiver copiando diretórios
- -Com : Comprimir dados
- -para : Arquivo de dados
- -n : Operação a seco, deve ser executada em combinação com o modo detalhado. Simplesmente exibe as ações se o comando fosse executado de verdade
- -excluir : Exclua o (s) arquivo (s) e diretório (s) no diretório de destino se o diretório de origem não os contiver mais
- -nenhum-arquivo-inteiro : Força o rsync a usar seu algoritmo de transmissão delta, aconteça o que acontecer. Útil em cenários onde você deve garantir a menor quantidade de gravação de dados.
- –Remove-source-file : Exclua o (s) arquivo (s) de origem após a cópia.
Vamos verificá-los em ação. Primeiro, a cópia do diretório. Execute o seguinte comando.
$rsync-vrdir_A/dir_A_copy
Para uma saída mais detalhada, vamos usar o sinalizador -vv.
$rsync-vv -rdir_A/dir_A_copy
Agora, vamos verificar a parte legal do rsync. Discutimos como o rsync copia de forma inteligente apenas os arquivos modificados, economizando largura de banda e gravação em disco. É hora de verificar isso em ação. Neste exemplo, a ação será realizada dentro do dir_A diretório.
$rsync-vv - nenhum arquivo inteirofictício*dir_B/
Apesar da transmissão delta habilitada, o rsync pode não se aplicar quando você estiver realizando uma transferência local de dados.
Agora, vamos verificar o recurso de simulação. Antes de executar qualquer comando rsync de verdade, é sempre importante que você o teste com antecedência. É aqui que entra a simulação. O Rsync mostrará o que acontecerá se o comando realmente for executado.
$rsync-anvrdir_A/dir_A_copy
O Rsync também pode funcionar com diretórios remotos, sem problemas. Tudo o que precisa é uma conexão SSH adequada com as chaves SSH configuradas.
$ rsync<opção> <local_dir><nome do usuário> @<hospedeiro remoto>:<destino_dir>
Deseja realizar uma operação de movimentação? Para colocar isso na perspectiva do rsync, o rsync irá copiar o conteúdo do diretório de origem e, em seguida, excluir o conteúdo de origem.
$rsync-v --remove-source-files <fonte> <destino>
Confira o resultado da operação.
$árvoredir_A$árvoredir_A_copy
Pensamentos finais
O cp e 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 muito bons para scripts. Apenas certifique-se de testar as funções antes da implementação.
Aproveitar!