Как примонтировать ftp-папку и как заливать файл на ftp через консоль

Была у меня цель – заливать файлы на ftp с помощью одной только консоли.

Например так: upload test.txt — на выходе получаем ссылку на скачивание

С таким скриптом устраняется зависимость от любых сервисов типа sendspace, которые к тому же периодически мониторят всякие “хакеры”, ища что-нибудь интересное.

Наконец, я его реализовал.

Нам понадобится:

1. примонтировать ftp папку к нашей системе

2. написать bash-скрипт для загрузки файла

Приступим.

Первым делом, чтобы монтировать ftp-директории к нашей локальной системе, необходимо установить curlftpfs:

1
sudo yum install curlftpfs

Далее, открываем /etc/fstab, в котором хранятся все правила монтирования в нашей системе:

1
sudo vim /etc/fstab

Добавляем в него строчку:

1
curlftpfs#USER:PASSWORD@SERVER  /MY_DIR fuse    rw,uid=1000,umask=0777,user,suid,allow_other,exec,auto,utf8 0 1

тут все просто – указывает юзера, пароль, имя/ip сервера и на месте /MY_DIR – свою локальную папку, в которую хотим примонтировать.

Говорим mount заново прочитать fstab:

1
sudo mount -a

Готово.

Теперь, чтобы залить файл на ftp – достаточно скопировать его в /MY_DIR

но это всё же слишком долго, а мы ленивые, к тому же MC ощутимо тормозит, если в одной из его вкладок открыта ftp-директория. Поэтому напишем bash-скрипт, который будет не только заливать файл за нас, но ещё и делать много других полезных сопутствующих действий.

Создадим его в родной папке bin. После этого можно сделать ссылку на него в /usr/bin, можно добавить родной bin в список путей, которые сканируются башем при вызове команды – чтобы вызывать его командой upl.sh и не писать полный путь. Но это сделать несложно, поэтому пусть это будет вашим домашним заданием.

1
vim ~/bin/upl.sh

Запуск скрипта осуществляется с передачей имен файлов в качестве аргументов:

1
upl.sh my.zip test.txt video.avi

А из mc ещё проще – можно выделить нужные файлы с помощью Insert и набрать:

1
upl.sh %t

Директория для загрузки файлов на фтп – /local_ftp_dir/server.ru/uploads/

Дальнейшие комментарии будут в самом коде:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash

# created 25/01/2011


# если кол-во входных параметров = 0

if [ $# -eq 0 ]

then

# пишем что это нехорошо и завершаем скрипт

echo 'UPL - script to upload files on freedomscripts server. use only with arguments!'

exit 0

fi


# перебираем все полученные аргументы

for file in $@

do

# текущая дата в формате день.месяц.ГОД - для уникальной папки на ftp

date=$(date +%d.%m.%y)

newUploadDir = /local_ftp_dir/server.ru/uploads/$date


# если директория для текущей даты уже существует - не делать ничего

if [ -d newUploadDir ]; then

#nothing

echo "dir $date is exists"

# если же её нет - сегодня ничего не заливали - создаем папку

else

mkdir newUploadDir

fi


# копируем в неё файл и получаем ссылку на его скачивание

cp $file newUploadDir

echo "done! https://www.server.ru/uploads/$date/$file"


# дозаписываем отчет о загрузке в файлик uploads.txt

echo "$(date +%R) https://www.server.ru/uploads/$date/$file" >> /home/user/bin/uploads.txt


# удаляем файл

rm $file

done
Рейтинг
( Пока оценок нет )
Загрузка ...