Сценарий оболочки для загрузки файлов данных за 24 часа на ftp; не удалось определить проблему

file_list=$( find . -type f -name * -mtime -1 )ftp -n << EOF
open ftpip

user uname pwd

cd directory

prompt

hash

bin

mput $file_list

bye

EOF

не удалось загрузить с помощью вышеприведенного скрипта... и с помощью недействительной команды

2 ответа

Помимо проблемы со ссылкой на звездочку и того факта, что ваш оператор ftp должен начинаться с новой строки, я подозреваю, что ваша переменная $ file_list может зайти слишком долго, чтобы ее можно было хорошо обработать. Я сделал вам небольшой скрипт, который использует "tar" для сбора файлов, которые вы хотите, в один архив, названный в честь сегодняшней даты. Тогда вы можете FTP, что вместо 8 миллионов файлов ;-)

Ну вот:

#!/bin/bash
#
# Make dated tar file of everything from last 24 hrs, filename like "Backup2013-12-14.tgz"
#
FILENAME='date +"Backup%Y-%m-%d.tgz"'
find . -type f -mtime -1 | tar -cvz -T - -f "$FILENAME"

ftp -n << EOF
open somehost
user joe bloggs
prompt
hash
bin
mput "$FILENAME"
bye
EOF


Вам либо нужно поставить * в кавычки, чтобы он не сразу расширял или не -name * altogeather, поскольку он по умолчанию.

licensed under cc by-sa 3.0 with attribution.