私はtarballを作成してSFTPリソースにのみ保存したいと思います。私はデータ破損の編集証があるため、一般的に依存できるようにしたい場合は、タールボールのsha256sumを一緒に保存し、アーカイブを作成するときにそれらを計算し、アーカイブを作成してからそれを読んで記憶媒体を保存します。 。
私はこれがとても簡単だと思い、次のコマンドを入力しました。
tar --exclude='./somefolder' -zc . | tee "sftp://mydomain.ending/storage/location/on/server/sth.tar" | sha256sum
また、リモート端末用にNautilusを使用してみました。
tar --exclude='./somefolder' -zc . | tee ":/run/user/1000/gvfs/sftp:host=mydomain.ending/storage/location/on/server/sth.tar" | sha256sum
ただし、出力は次のようになります。
tee: 'sftp://mydomain.ending/storage/location/on/server/sth.tar': No such file or directory
そして
tee: ':/run/user/1000/gvfs/sftp:host=mydomain.ending/storage/location/on/server/sth.tar': No such file or directory
それぞれ。
タールボールを最初にローカルに保存せずにどのように保存しますか?リモートリソースを簡単に使用できるように、一部のフォルダには最初にインストールしないことをお勧めします。
私はUbuntu 16.04(Linux 4.4.0を含む)を使用しています。
答え1
素晴らしいgvfsまたはsshfsインストールがない場合は、sftpクライアントを使用する必要があります。私はlftp
FIFOパイプで動作しているので> = 4.7を選択しました(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
。
プロセスの交換
プロセス置換は、名前付きパイプ(FIFO)または/ dev / fd名前付きファイルを開く方法をサポートするシステムでサポートされています。 <(リスト)または>(リスト)形式を使用します。プロセスリストの入力または出力は、FIFOまたは/dev/fdのファイルにリンクされます。ファイル名は、拡張結果として現在のコマンドに引数として渡されます。 >(リスト)形式を使用している場合は、ファイルに書き込むとリストへの入力が提供されます。 <(リスト)形式を使用している場合は、リストの出力を取得するには引数として渡されたファイルを読み取る必要があります。
答え2
gvfs
Nautilusは、対応するSFTPサーバーなどのリモート保存場所をマウントするために使用されます。これにより、リモートサーバーをローカルファイルシステムの一部として処理できます。通常、マウントされるパスは次のとおりです。
/run/user/<your uid>/gvfs/<server specification>/<path>
接頭辞は常に次のとおりです。
/run/user/<your uid>
したがって、そのディレクトリまたは-ingを介してls
マウントポイントを見つけることができます。Tab
このマウントポイントを見つけると、通常tee
どおりに使用できます(明確にするために改行が追加されます)。
tar --exclude='./somefolder' -zc . \
| tee "/run/user/1000/gvfs/sftp:host=mydomain.ending/storage/location/on/server/sth.tar" \
| sha256sum
あるいは、SFTPの代わりにSSHを使用してGVFSマウントを防止し、移植不能なプロセスの交換を防ぐこともできます。
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