Для этого я бы предложил использовать rsync, а не scp, так как он гораздо более мощный. Просто поместите следующее в исполняемый скрипт. Здесь я предполагаю, что все файлы (и ничего более) находятся в каталоге, указанном в local_dir /.
#!/bin/env bash
rsync -azrp --progress --password-file=path_to_file_with_password \
local_dir/ remote_user@remote_host:/absolute_path_to_remote_dir/
if [ $? -ne 0 ] ; then
echo "Something went wrong: don't delete local files."
else
rm -r local_dir/
fi
Возможны следующие варианты (подробнее см., Например, http://ss64.com/bash/rsync.html):
-a, --archive Archive mode
-z, --compress Compress file data during the transfer
-r, --recursive recurse into directories
-p, --perms Preserve permissions
--progress Show progress during transfer
--password-file=FILE Get password from FILE
<strike>--delete-after Receiver deletes after transfer, not during</strike>
Редактировать: удалено --delete-after, поскольку это не является целью ОП
Будьте внимательны при настройке разрешений для файла, содержащего пароль. В идеале только вы должны иметь доступ к файлу.
Как обычно, я бы порекомендовал немного поиграть с rsync, чтобы ознакомиться с ним. Лучше проверить возвращаемое значение rsync (используя $?) Перед удалением локальных файлов.
Больше информации о rsync: http://linux.about.com/library/cmd/blcmdl1_rsync.htm