trilha / arco 2 · mexer em arquivo
o que é cp e o que ele faz
você copiou a pasta para o backup e o cp não disse nada. uma versão antiga entrou por cima de uma nova. o -v mostrou a seta e não avisou que era por cima.
em poucos minutos: o que o cp faz, o que o -a preserva e o -r não, e o erro de copiar por cima sem saber. a pílula fica no final.
a aula já funciona: lê, treina no terminal e faz o quiz.
escolhe a camada
em uma frase
é tirar xerox. a xerox sai com a data de hoje, e se a gaveta de destino já tinha a folha, ela some.
para quem está começando
copia um arquivo para outro nome, ou para dentro de uma pasta. o original fica onde estava. para copiar pasta, precisa do -r.
a fonte da verdade
o cp lê o arquivo de origem e escreve num arquivo novo no destino, com outro inode. se o nome já existe no destino, ele abre aquele arquivo e escreve por cima. o -a copia também dono, data, permissões e links.
o número por trás do nome
a cópia nunca tem o mesmo inode: o ls -i mostra dois números. sem o -a, a cópia ganha a data de agora e o seu usuário como dono. com o -a, a data de modificação e as permissões vêm juntas.
agora você
um linux de verdade, só seu, apagado quando você sai.
copia o docker-compose.yml da pasta homelab para um arquivo novo, e compara as datas dos dois.
cp homelab/docker-compose.yml compose-copia.yml && ls -l --time-style=long-iso homelab/docker-compose.yml compose-copia.ymltenta copiar a pasta homelab inteira, sem nenhuma opção. o que acontece?
copia a pasta inteira com -a e compara de novo as datas.
cp -a homelab copia-a && ls -l --time-style=long-iso homelab/docker-compose.yml copia-a/docker-compose.ymla pasta destino já tem um relatorio.txt. copia o relatorio.txt da origem para lá e olha o que ficou.
cp origem/relatorio.txt destino/ && cat destino/relatorio.txttenta de novo com -i, que pergunta antes de sobrescrever. responde n.
cp -i origem/relatorio.txt destino/
cuidado: cp sobrescreve em silêncio
o arquivo ~/copiar-backup.sh copia tudo que está em ~/origem para ~/destino com cp -av. o -v mostra cada arquivo e não avisa nada. só que a notas.txt do destino é a versão importante, a mais nova, e a da origem é a antiga. o cp passa por cima. passo 1: veja o estrago. rode ~/copiar-backup.sh e depois cat destino/notas.txt. a versão importante virou a velha. para trazer de volta, digite restaurar-destino (só esse nome, sem ./ e sem .sh). passo 2: conserte o script. abra com nano ~/copiar-backup.sh. para salvar: ctrl+o e enter. para sair: ctrl+x. passo 3: teste. rode ~/copiar-backup.sh de novo e confira que o destino/notas.txt continua com a versão importante, e que o novo.txt entrou.
a pílula
cp a b | copia o arquivo, com data de agora |
cp -a pasta/ destino/ | copia preservando dono, data e permissões |
cp -n a b | não sobrescreve o que já existe |
o cp não pergunta antes de sobrescrever.