Если вы квалифицируетесь как «разработчик», вы можете получить подлинный RHEL бесплатно с учетом ограничений на использование (в основном, «без использования в производственной среде»)
https://techreport.com/forums/viewtopic. php? t = 117614
ISTR была также студенческая версия RHEL, но я не уверен, существует ли она до сих пор и каково ее определение студента. Это было не бесплатно, а просто дешево.
Без причудливых монтирований gvfs или sshfs вам нужно использовать sftp-клиент. Я выбираю lftp
>=4.7, потому что он работает с каналами FIFO (scp
, а sftp
— нет ).
Работает с bash
в Linux:
tar --exclude='./somefolder' -zc. \
| tee >(lftp -c 'connect sftp://user:pass@server/path/ ;put /dev/stdin -o sth.tar.gz;') \
| sha256sum
В качестве альтернативы можно использовать ssh
клиент (внешние скобки, необходимые для интерактивной аутентификации по паролю):
(tar --exclude='./somefolder' -zc. \
| tee >(ssh user@server "cat > /path/sth.tar.gz") \
| sha256sum)
Заметьте, tee's
аргумент тоже выглядит немного экзотично, но это не -переносимая bash
магия, позволяющая избежать дополнительных mkfifo
команд, объясненных вman bash
:
Process Substitution
Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files. It takes the form of <(list) or >(list). The process list is run with its input or output connected to a FIFO or some file in /dev/fd. The name of this file is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list.
Nautilus использует gvfs
для подключения удаленных хранилищ, таких как SFTP-сервер в вашем вопросе. Это позволяет вам обращаться с удаленным сервером так, как если бы он был частью вашей локальной файловой системы. Путь, по которому он монтируется, обычно
/run/user/<your uid>/gvfs/<server specification>/<path>
Я совершенно уверен, что префикс всегда
/run/user/<your uid>
, так что вы можете найти эту точку монтирования с помощью ls
или вкладки-в этом каталоге.
Как только вы нашли эту точку монтирования, вы можете использовать tee
как обычно (с добавлением разрывов строки -для ясности):
tar --exclude='./somefolder' -zc. \
| tee "/run/user/1000/gvfs/sftp:host=mydomain.ending/storage/location/on/server/sth.tar" \
| sha256sum
В качестве альтернативы вы можете избежать монтирования GVFS и по-прежнему избежать замены переносимого процесса -, используя SSH вместо SFTP:
tar --exclude='./somefolder' -zc. \
| ssh mydomain.ending 'tee "/storage/location/on/server/sth.tar"' 2>/dev/null \
| sha256sum
К сожалению, sftp
программа не позволяет отправлять файлы на удаленный хост с помощью одной командной строки, а только извлекать их.
Как указывает @rudimeier, описанный выше метод ssh
загружает и загружает файл, чтобы избежать его локального хранения.Если вы не хотите -повторно загружать его, может быть лучше сделать это sha256sum
удаленно:
tar --exclude='./somefolder' -zc. \
| ssh mydomain.ending 'tee "/storage/location/on/server/sth.tar" | sha256sum' 2>/dev/null