Eu gostaria de um script que baixe arquivos a cada x minutos e lembre quais arquivos foram baixados. Eu encontrei esta questão semelhante; Script LFTP para baixar arquivos
O problema é que, uma vez que o arquivo tenha baixado da fonte, ele precisa permanecer na origem, no entanto, uma vez atingido o destino, ele será excluído dessa pasta (devido a ser processado / renomeado e movido para uma nova pasta)
Então, se fizer o download da fonte, então, excluir do destino, eu diria que o script simplesmente baixará o mesmo arquivo, sobre & sobre.
II pode usar o script de exemplo acima e combiná-lo com um parâmetro que verifica um arquivo existente em um log de download? No entanto, eu não tenho certeza se 1) pode funcionar e 2) como eu faria isso.
Acontece que eu respondi a pergunta com a ajuda de um amigo. Aqui está o script que acabei usando:
#!/bin/bash
set -x
login="USER"
pass="PASS"
host="HOST"
remote_dir="/remote/folder/"
local_dir="/local/download/folder/"
timestamp="/tmp/sendtv.ts"
lock_file="/tmp/sendtv.lock"
if [ -e "$lock_file" ]; then
echo "SendTV is running already."
exit
fi
trap "rm -f $lock_file" SIGINT SIGTERM
touch "$lock_file"
lftp -u $login,$pass $host << EOF
set ftp:ssl-allow yes
set ftp:ssl-protect-data yes
set ftp:ssl-protect-list yes
set ftp:ssl-force yes
set mirror:use-pget-n 5
mirror --depth-first --no-empty-dirs --include-glob *.mkv --newer-than $timestamp -c -P2 --use-pget-n=50 -vvv "$remote_dir" "$local_dir"
quit
EOF
if [ $? -eq 0 ]; then
touch "$timestamp"
fi
rm -f "$lock_file"
A maneira como impede a interrupção de downloads anteriores é que ele toca o arquivo de timestamp toda vez que é executado e evita que qualquer coisa mais antiga que a última execução seja baixada.