Tengo un archivo que contiene una lista de rutas de archivos. Los estoy descargando así con wget:
wget -i cram_download_list.txtSin embargo, la lista es larga y mi sesión se interrumpe. Me gustaría mirar el directorio para el que ya existen archivos y solo descargar los que están pendientes.
He estado tratando de encontrar una opción que involucre a comm, pero no puedo encontrar la manera de conectarlo con wget.
El contenido del archivo se ve así:
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239280/NA07037.final.cram ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239286/NA11829.final.cram ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239293/NA11918.final.cram ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239298/NA11994.final.cramActualmente estoy tratando de hacer algo como esto:
ls *.cram | sed 's/^/ftp:\/\/ftp.sra.ebi.ac.uk\/vol1\/run\/ERR323\/ERR3239480\//' > downloaded.txt comm -3 <(sort cram_download_list.txt) <(sort downloaded.txt) | tr -d " \t" > to_download.txt wget -i to_download_final.txtwget -c -i <(find -type f -name '*.cram' -printf '%f$\n' |\ grep -vf - cram_download_list.txt ) Encuentra archivos que terminan en cram y los imprime seguidos de $ y una nueva línea. Esto se usa como una lista de coincidencias de expresiones regulares invertidas para su lista de descargas, es decir, elimina cualquier línea que termine en los nombres de archivos existentes de su lista de descargas.
Agregado: -c para finalizar archivos incompletos (es decir, reanudar la descarga)
Nota: no maneja bien los espacios o las nuevas líneas en los nombres de los archivos, pero estos son ftp -URL, por lo que no debería ser un problema en primer lugar.
Si también desea manejar archivos transferidos parciales, siempre debe pasar el conjunto completo de nombres de archivo que wget puede verificar la longitud. Lo que significa que para este escenario la única manera es:
wget -c -i cram_download_list.txtLos archivos que ya están completos solo se revisarán y omitirán.
Me gustaría mirar el directorio para el que ya existen archivos y solo descargar los que están pendientes.
Para obtener tal comportamiento, puede usar -nc (alias --no-clobber ). Omite las descargas que se descargarían en archivos existentes (sobrescribiéndolos). Entonces en tu caso
wget -nc -i cram_download_list.txtTenga en cuenta que esta solución no maneja archivos descargados parcialmente.