Няколко команди на един ред за пренос на файлове от един на друг компютър

Тук ще говорим за пренос на няколко файла от една на друга Linux машина. Стандартните действия са:

cd /path/to/folder
tar -zcf archive.tar.gz folder-to-move
scp archive.tar.gz user@remotehost:/path

и евентуално разархивиране на файла на другия компютър. Тук ще предложим няколко начина, които да улеснят и ускорят малко това.

За начало нека разгледаме следната команда:

(cd /path/to/folder; tar zcvf - folder-to-move) | (ssh user@remotehost 'cd /path; cat > archive.tar.gz')

Предимство тук е, че на изходния компютър не се създава временен файл, което е особено полезно при ограничено пространство. Компресията се извършва от изпращача, но затова пък трафикът между двете машини е по-малък.

Ако все пак трафикът не е от значение (машините имат добра скорост на трансфер помежду си и трафикът е сравнително евтин) и изпращащата машина е слаба и не се справя добре с компресията, то може да оставим това на приемащата машина:

(cd /path/to/folder; tar cvf - folder-to-move) | (ssh user@remotehost 'cd /path; cat | gzip > archive.tar.gz')

Естествено при наличие на място на приемащата машина може да ускорим допълнително нещата като изобщо не компресираме:

(cd /path/to/folder; tar cvf - folder-to-move) | (ssh user@remotehost 'cd /path; cat > archive.tar')

В случай, че искаме да копираме директорията, а не да я архивираме, то ползваме следното за компресиран трафик:

(cd /path/to/folder; tar zcvf - folder-to-move) | (ssh user@remotehost 'cd /path; cat | tar -zxf -')

и за некомпресиран:

(cd /path/to/folder; tar cvf - folder-to-move) | (ssh user@remotehost 'cd /path; cat | tar -xf -')

Коментари:

Свински уши (02-02-2009 09:35) :
rsync --verbose --progress -aHz -e "ssh -p 22" /home/usho IP:/home

Обратно към списъка със статиите

Тази страница последно е променяна на 2024-04-29 02:50:23