Стиснути каталог за допомогою tar / gz через SSH на локальний комп'ютер?


15

По суті, я хотів би tar / gz каталог на віддаленій машині і зберегти файл на своєму локальному комп'ютері без необхідності підключення назад до моєї локальної машини з віддаленого. Чи є спосіб зробити це через SSH? Файл смоли не потрібно зберігати на віддаленій машині, лише на локальній машині. Чи можливо це?

Відповіді:


26

Ви можете це зробити за допомогою команди ssh, просто скажіть tarстворити архів на його стандартному виході:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

Ще один підхід, який є більш зручним, якщо ви хочете зробити багато файлових маніпуляцій на іншій машині, але є надмірним для створення однофакторного архіву, - це встановлення файлової системи віддаленої машини за допомогою SSHFS ( файлова система FUSE ). Ви повинні включити стиснення на рівні SSH.

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo

3
Мені просто цікаво, чому ти б рекомендував tar -cf - foo | gzip -9замість цього tar -czf - fooчи tar -cz foo?
Патрік

@Patrick Трохи більш портативний, наприклад, він буде працювати на Solaris.
Жил "ТАК - перестань бути злим"

Ви б так люб'язно описали всі аргументи?
Rootical V.

3
@RooticalV. tar -cf - fooстворює ( -c) архів на стандартному виході ( -f -) з файлу foo. gzip -9використовує найкращий (найповільніший) метод стиснення. Якщо вам все одно, ви можете просто скористатися ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
arekolek

-1

Простий спосіб скопіювати каталог або файл, стиснувши його лише для транспорту:

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2

1
Це не зберігає tarархів на локальній машині, що було те, що було призначено.
Kusalananda

1
Це для людей, які зайнялися цим питанням (як я), коли шукають, як скопіювати щось через SSH із стисненням. Якраз це додаткове tar xzвиходу з труби з більш простим і читабельним прикладом.
П'єр де ЛЕСПІНАЙ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.