Удаление fileов с удаленного FTP-serverа старше x дней

У меня есть удаленный FTP-server, где я храню некоторые резервные копии через cronjob.

Проблема в том, что у меня осталось немного места, поэтому я делаю инкрементные резервные копии. Я хочу save резервные копии около 14 дней.

У меня less другого доступа к serverу, кроме FTP, и теперь я не могу удалить fileы старше x дней. Каждый file получил имя с датой в нем

yxzNamezxy-date-ymd.tar.bz2 (datev-20100111.tar.bz2( 

Надеюсь помочь.

Приветствия и благодарность за надежные ответы,

Деннис

/Редактировать

Я пытаюсь использовать curl, который поддерживается в ответ на эту часть кода

 curl ftp://$FTP_SERVER --user $FTP_USER:$FTP_PASS --list-only > files.tmp declare -a aFiles let iCount=0 exec < files.tmp while read sLine do aFiles[$iCount]=$sLine ((iCount++)) done echo -e "\n Files: \n\n\n" echo ${aFiles[@]} echo -e "\nfor ...\n\n\n" for sFile in $aFiles do echo -e "\nFile:" $sFile done 

но цикл secound не дает мне более одного имени fileа

Ура,

Деннис

Вы можете отправить ряд команд в lftp и обернуть их в сценарий оболочки, который вычисляет имя fileа слишком старых fileов (см. Скрипт ниже).

 TODAY=$(date --iso) # Today's date like YYYY-MM-DD RMDATE=$(date --iso -d '6 days ago') # TODAY minus X days - too old files FTPUSER=username FTPPW=password # Better load this from an encrypted file FTPSERVER=FQDN_or_IP LFTP=/usr/bin/lftp # Path to binary TMPDIR=$(mktemp -d) # Your archives are here # CAUTION: mput -E deletes local files after upload echo -n "Uploading files via FTP... " $LFTP << EOF open ${FTPUSER}:${FTPPW}@${FTPSERVER} cd backups/${HOSTNAME} mkdir ${TODAY} cd ${TODAY} mput -E ${TMPDIR}/* cd .. rm -rf ${RMDATE} bye EOF echo "Done." 

Удостоверьтесь, что никто из exec root может прочитать этот скрипт или поместить учетные данные в другое место. TMPDIR – это directory, в котором резервные копии находятся локально. Конечно, вам нужно отредактировать повязку.

НТН,
Пера

При высоком риске быть проголосовавшим за публикацию последнего комментария по этой теме, вот идея.

Если вам не нужны даты для ваших имен fileов, и если вы сохраняете небольшое количество резервных копий, вы можете использовать порядковые имена fileов: ie backup.1.tgz, backup.2.tgz, backup.3.tgz и скоро.

Учитывая эти имена, вы можете просто переименовать предыдущие резервные копии до того, как будет загружена новая.

  • переименовать backup.2.tgz backup.3.tgz
  • переименовать backup.1.tgz backup.2.tgz
  • положить backup.1.tgz

Вы должны написать сценарий:

  • Получить list fileов, используя --list-only curl
  • Разбор списка fileов, которые вы хотите удалить.
  • Используйте параметр --request или --request для отправки команды rm или DELE с выбранными именами fileов

Редактировать:

Второй цикл относится к $aFiles как к скаляру. Вам нужно ссылаться на него как на массив вроде этого:

 for sFile in ${aFiles[@]} do echo -e "\nFile:" $sFile done 

Кроме того, вам не нужен file temp. Вы должны иметь возможность curl трубку во while .

У меня схожая ситуация, и я вижу, что на это еще не ответили полностью. Я понимаю, что эти три пули являются вехами сценария:

  • Получить list fileов, используя опцию -list-only curl
  • Разбор списка fileов, которые вы хотите удалить.
  • Используйте параметр -quote или –request для отправки команды rm или DELE с выбранными именами fileов

и это очеviewно. Но можем ли мы get скрипт, который их делает?

Мои fileы имеют имена fileов, содержащие дату и time, когда они были сгенерированы и загружены на удаленный FTP-server:

xxx.yyy.z.aaa_01_20160313102903_DUMP01.dmp

Позиция даты и времени (например, 20160313102903) в имени fileа статична. Конечно, отметки времени этих fileов также действительны.

Моя цель – удалить fileы старше X дней, используя скрипт, который должен запускаться в cron на Linux-машине, где я могу использовать только curl или lftp.

  • Я не могу использовать какой-либо другой протокол, кроме ftp, для доступа к FTP-serverу (без sftp, no ssh)

  • Я не могу использовать команду date с syntaxом «X дней назад» или «–iso», поскольку на этой машине Linux работает BusyBox v1.20.2 (2015-01-30 16:18:45 WET), которая не понимает человеческую дату Рекомендации

  • Я не могу создать временные подпапки на этом FTP-serverе

Я искал сценарии, которые должны были привести меня к решению, но поскольку я linux noob, я прогрессирую очень медленно, и до сих пор я нашел только:

  • Я могу указать дату X дней назад: date -d "@ $ (($ (date +% s) – 86400 * $ XDays))"
  • Я могу перечислить все fileы с FTP-serverа: curl ftp: // [FTP_IP] / папка / подпапка / * –user MyUser @ [FTP_IP]: [MyUserPassword] –list-only "

Настоящий скрипт очень приветствуется.

  • FTP-передача fileов, циклическое перемещение по directoryу и копирование старых fileов
  • Ubuntu Server 12.04: apt-get не будет устанавливать vsftpd (пакет недоступен, но передается другим)
  • Скопировать fileы с serverа SVN на внешний server через FTP
  • Может просматривать ftp.microsoft.com, но не наш собственный FTP-website в IE
  • Есть ли свободное программное обеспечение для тестирования веб-serverа?
  • Ошибка FTP 530 при использовании изоляции пользователей FTP в IIS 8
  • Отkeyить выбранные fileы в fileе .tar.gz с удаленного ftp-serverа?
  • Проблема IIS 7.0 Блокировка fileов при загрузке
  • Как сделать FTP с удаленного serverа1 на удаленный server2 с клиентского ПК
  • Проследить process в ящике Linux
  • Вkeyение VSFTPD через iptables
  • Interesting Posts

    Почему у меня less накладных расходов на memory?

    Проблема при настройке сертифицированного certificateа SSL

    Проблема DNS-serverа Windows 2008 R2 – не сохранять изменения для зон передачи

    Команда ldifde не работает с «Invalid Parameter: Bad argument» -i '. А также любой эквивалентный PS Cmdlet?

    Как get resolvconf -u не поставить 127.0.01 в resolv.conf

    PHP 5.5 на Ubuntu с php-mcrypt: неудовлетворительные зависимости

    Как подkeyиться к serverу OpenVPN с dockerы-контейнера Bluemix?

    Хэши привязки Couchdb не соответствуют содержимому приложения

    ssh введите кодовую фразу одной строки

    SSL-certificateы, двухсторонняя authentication и балансировка нагрузки

    Openvpn – разрешенный шлюз переадресации, но не имеет доступа к каким-либо веб-websiteам

    DNS. Любой способ заставить server имен обновить запись домена?

    Монитор полосы пропускания iftop показывает скорости = 0 (но показывать подkeyенные хосты) на tun0 (ppp)

    Не удается войти в server из-за сбоя NFS

    Перенаправить все электронные письма, отправленные через функцию mail () PHP, на один внешний адрес

    Давайте будем гением компьютера.