É possível usar apenas a linha de comando para usar algo como o comando cp
or rsync
para rastrear um disco rígido em busca apenas de arquivos de imagem/vídeo? E talvez no processo de copiá-los para outro local preservando os nomes/caminhos das pastas no novo local?
Eu tenho alguns discos rígidos antigos que quero fazer backups de fotos e vídeos que tenho neles, mas eles estão espalhados, na melhor das hipóteses, por milhares de pastas e prefiro que o computador faça a maior parte do trabalho pesado para mim, se pelo menos tudo possível, mas ainda estou aprendendo sobre a linha de comando e suas habilidades impressionantes.
Responder1
Você pode usar find
para procurar arquivos de seu interesse, ou seja:
find /mnt/hd1 -name \*.jpg
irá procurar por arquivos jpg (bem, por arquivos com extensão .jpg) no diretório /mnt/hd1. Se quiser simplesmente copiar esses arquivos para algum lugar, você pode:
find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest
Isso executará cp
o comando para cada arquivo que puder encontrar no diretório /mnt/dest.
Espero que ajude :)
Responder2
Outra possibilidade, se você não quiser automatizá-lo em um script, é usar o comando find para criar um script bash. Em seguida, execute o script bash. Dessa forma você também pode saber a origem do arquivo.
Além disso, eu mudaria um pouco o que foi dito acima, caso você tenha nomes de arquivos duplicados, caso suspeite disso em seu ambiente. Você precisaria de alguma verificação de erros em seu script.
Você também deseja preservar o caminho do diretório?
ou seja, se um arquivo estiver aqui
/fonte/a/b/c/d/e.jpg
Você quer copiá-lo para
/dest/a/b/c/d/e.jpg ?
ou
/dest/e.jpg ?
Então um exemplo poderia ser
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
Isso copiaria apenas para um diretório/backup
Para preservar, você poderia fazer
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
Mas então você gostaria de criar todos os diretórios primeiro
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
O poder de fazer isso é que você também pode observar os scripts e garantir que tudo esteja bem antes de realmente executar os comandos. Eu queimei algumas vezes executando o comando com ...erm...resultados inesperados :)
Além disso, ter o roteiro também lhe dá um registro do que você fará.