¿Es posible utilizar únicamente la línea de comando para usar algo como el comando cp
o rsync
para rastrear un disco duro buscando solo archivos de imagen/video? ¿Y tal vez en el proceso de copiarlos a otra ubicación conservando los nombres/rutas de las carpetas en la nueva ubicación?
Tengo un par de discos duros viejos y quiero hacer copias de seguridad de las fotos y videos que tengo en ellos, pero, en el mejor de los casos, están dispersos en miles de carpetas y preferiría que la computadora hiciera la mayor parte del trabajo duro por mí, si es posible. Todo lo posible, pero todavía estoy aprendiendo sobre la línea de comando y sus impresionantes habilidades.
Respuesta1
Puede utilizar find
para buscar archivos que le interesen, es decir:
find /mnt/hd1 -name \*.jpg
Buscará archivos jpg (bueno, archivos con extensión .jpg) en el directorio /mnt/hd1. Si desea simplemente copiar esos archivos en algún lugar, puede:
find /mnt/hd1 -name \*.jpg -exec cp {} /mnt/dest
Esto ejecutará cp
el comando para cada archivo que pueda encontrar en el directorio /mnt/dest.
Espero eso ayude :)
Respuesta2
Otra posibilidad, si no desea automatizarlo en un solo script, es usar el comando de búsqueda para crear un script bash. Luego ejecute el script bash. De esta manera también podrás saber el origen del archivo.
Además, cambiaría ligeramente lo anterior en caso de que tenga nombres de archivos duplicados si sospecha esto en su entorno. Necesitaría alguna verificación de errores en su secuencia de comandos.
¿También desea conservar la ruta del directorio?
es decir, si hay un archivo aquí
/fuente/a/b/c/d/e.jpg
¿Quieres copiarlo a
/dest/a/b/c/d/e.jpg ?
o
/dest/e.jpg ?
Entonces un ejemplo podría ser
find /source -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/}' > copy.sh
Esto se copiaría solo en un directorio/copia de seguridad.
Para preservar, podrías hacer
(cd /source; find . -type f -name "*.jpg" -print | awk '{"cp -p "$1" /backup/"$1}') > copy.sh
Pero entonces querrás crear todos los directorios primero.
(cd /source; find . -type d -print | awk '{print "mkdir -p /backup/"$1}' > mkdir.sh
El poder de hacer esto es que también puedes observar los scripts y asegurarte de que todo se vea bien antes de ejecutar los comandos. Me he quemado varias veces ejecutando el comando con...erm...resultados inesperados :)
Además, tener el guión también te da un registro de lo que harás.