Мне нужно загрузить все содержимое каталога / home / test на мой ftp-сервер в определенной папке. Затем я буду планировать скрипт ежечасно через cron. Есть примеры?
NB. учтите, что я использую Netgear ReadyNAS Duo (ящик для debian), и я не могу установить lftp или аналогичные, только стандартные команды :)
Нашел в сети этот bash-скрипт с качественной документацией:
#!/bin/bash
HOST=ftp.server.com #This is the FTP servers host or IP address.
USER=ftpuser #This is the FTP user that has access to the server.
PASS=password #This is the password for the FTP user.
# Call 1. Uses the ftp command with the -inv switches.
#-i turns off interactive prompting.
#-n Restrains FTP from attempting the auto-login feature.
#-v enables verbose and progress.
ftp -inv $HOST << EOF
# Call 2. Here the login credentials are supplied by calling the variables.
user $USER $PASS
# Call 3. Here you will change to the directory where you want to put or get
cd /path/to/file
# Call4. Here you will tell FTP to put or get the file.
put test.txt
# End FTP Connection
bye
EOF
После настройки и сохранения сценария .sh сделайте его исполняемым:
chmod + x ftpscript.sh
Наконец, настройте свою cronjob
команда в одной строке:
ftp -in -u ftp://username:password@servername/path/to/ localfile
curl
может загружать файлы на FTP-серверы.
curl -T "$FILE(s)" -u $USERNAME:$PASSWORD $SERVER/$DIR/
Вы также можете использовать шаблон глобуса для $FILE
.
если у вас есть 'curl', который является довольно стандартным, он может выполнять автоматическую загрузку по FTP (см. справочную страницу для параметра -T)
Если ssh установлен и настроен для передачи файлов, вы можете использовать scp
.
Если не netcat
или rsync
может быть вариант.
Если у вас есть возможность устанавливать или создавать программы, утилита называется ftpsync может быть именно то, что вы ищете. [Я никогда не пробовал, и, кажется, есть несколько утилит, называемых так или чем-то очень похожим.]
В сценарии bash вы должны иметь возможность делать что-то вроде:
#!/bin/bash
echo "
verbose
open 1.2.3.4
USER ftpuser ftppasswd
put /path/to/stuff.tar.gz
bye
" > ftp -n > ftp_$$.log
Таргетирование каталога в первую очередь было бы хорошей идеей, поскольку это значительно упростило бы его. Кроме того, в зависимости от размера вашего каталога и скорости вашей сети вы можете рассмотреть возможность выполнения дифференциальных таров.