Como apagar o arquivo mais antigo via FTP usando o CURL?

1

Estou tentando escrever um script que use CURL para FTP em uma pasta em um servidor de arquivos e conte os arquivos nessa pasta. Se houver mais de 5 arquivos, exclua o mais antigo.

Eu sei como apagar arquivos via FTP com CURL, no entanto, a contagem e a obtenção do nome de arquivo mais antigo é onde estou perdido.

    
por BigOmega 11.05.2012 / 02:13

1 resposta

1

Eu não acho que você pode fazer isso com o curl. Você precisaria executar curl -l para listar o conteúdo do diretório, contar as correspondências, classificar por data e emitir comandos rm remotos com curl -Q .

Se o seu sistema suporta FUSE (a maioria faz), recomendo montar o diretório remoto como um sistema de arquivos. Essa abordagem permite que você divida seu problema em duas tarefas separadas: acesse os arquivos remotos montando-os e trabalhe neles como faria em arquivos locais. Você pode usar o curlftpfs para a montagem remota.

mkdir ftp.example.com
curlftpfs ftp.example.com ftp.example.com
cp -p /path/to/local/file ftp.example.com/remote/dir/

Agora, para localizar os arquivos mais antigos em um diretório, a maneira mais fácil é usar o zsh e seus qualificadores da glob . Trabalhando no diretório ftp.example.com/remote/dir/ :

files=(*(mm))                # Om = sort by date, youngest first
if ((${#files} > 5)); then
  rm $files[-1]              # remove the last file
  # rm $files[6,-1]          # remove all but the 5 youngest files
fi
    
por 11.05.2012 / 03:33

Tags