Работа с Netcat, ssh, rsync
Установка nc и pv
sudo pacman -S gnu-netcat pv
Примеры передач.
cat dump.iso | pv -b | nc -l 3333
dd if=/dev/sdb5 | gzip -9 | nc -l 3333
tar -czf - /etc/ | pv -b | nc -l 3333
Примеры получения.
nc 187.187.55.18 3333 | pv -b > dump.iso
nc 187.187.55.18 3333 | pv -b > ddsdb5dump.img.gz
nc 187.187.55.18 3333 | pv -b > dump.tar.gz
Пример ssh туннеля
Это нужно в том случае, если нет доступа к порту 3333
. Вся передача шифруется, т.к. ssh.
Создаем мост(туннель) на ip 127.0.0.1
(localhost), на порт 23333
. -p 22
Это стандартный ssh порт, обычно его меняют.
ssh -p 22 -f -L 23333:127.0.0.1:3333 name@187.187.55.18 sleep 10; \
nc 127.0.0.1 23333 | pv -b > ctlos.iso
# проброс порта
ssh -p 22 -fN -L 23333:127.0.0.1:3333 name@187.187.55.18
scp
С локалки на удаленнку.
scp -P 2222 file.txt file2.txt name@187.187.55.18:/home/user/dir
scp -P 2222 -r dir1 name@187.187.55.18:/home/user/dir2
С удаленки на локалку.
scp -P 2222 name@187.187.55.18:file.txt /home/user/dir
scp -P 2222 name@187.187.55.18:~/\{file1,file2,file3\} .
scp -P 2222 -r name@187.187.55.18:/home/dir/ /home/user/dir/
С одного сервака на другой.
scp name@187.187.55.18:/dir/file.txt name@198.198.188.18:/name/dir/
Синхронизация rsync
Установка rsync.
sudo pacman -S rsync
На сервере нужно создать диреторию /dump
, запустить сервис(daemon), настроить конфиг и открыть 873 порт(tcp).
sudo systemctl start rsyncd.service
uid - пользователь на сервере, gid - группа в которой он состоит(обычно users). Создаем на сервере /dump
и даём ему права.
sudo mkdir /dump
sudo chown username:users /dump
Конфиг: /etc/rsyncd.conf
. Укажите ip в hosts deny
с которого вы подключаетесь.
syslog facility=daemon
pid file=/var/run/rsyncd.pid
transfer logging = yes
log file = /var/log/rsyncd.log
max connections = 10
exclude = lost+found/
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
[dump]
comment = rsync open for dump
uid = username
gid = users
#auth users = st
#secrets file = /etc/rsyncd.scrt
path = /dump/
list = yes
read only = no
hosts allow = 188.128.110.170
hosts deny = *
После изменения конфига сделать рестарт. Авторизацию по паролю я не использую, поэтому две строки закомментил(#).
sudo systemctl restart rsyncd.service
По моим тестам лучше передавать не сжатые данные(Синхронизацция).
Отправка файла и пример директории.
rsync -auvz -L -P ~/test.sfs rsync://187.187.55.18/dump
rsync -auvz -L -P ~/dir/* rsync://187.187.55.18/dump
Получение.
rsync -auvz -L -P rsync://187.187.55.18/dump ~/.dump/
Ssh.
rsync -auvz -L -P -e "ssh -p 2222" name@187.187.55.18:/path/to/copy /local/path
rsync -auvz -L -P -e "ssh -p 2222" /local/path name@187.187.55.18:/path/to/copy