SFTP サーバー内のすべてのファイルを一覧表示し、すべてのファイルの合計サイズを取得するにはどうすればよいでしょうか?

SFTP サーバー内のすべてのファイルを一覧表示し、すべてのファイルの合計サイズを取得するにはどうすればよいでしょうか?

私はSFTPサーバーに接続しています

sftp -i key.pem user@server

サーバーにはログが含まれており、 を使用して最大 4 日前のログを一覧表示できますls。問題は、ls では 4 日前のログを取得できないように見えることです。ディレクトリ内のすべてのログを一覧表示し、その合計サイズを取得するにはどうすればよいでしょうか。

サイズに関しても同様の質問がありましたここを使用したソリューションを提供していますdu -hc。しかし、このコマンドは私の sftp サーバーに存在せず、ssh アクセスもできません。何かアイデアはありますか?

答え1

lftpコマンドがありdusftpプロトコルをサポートしています:

lftp sftp://user@host

または、使用する SSH キーを指定してパスワード プロンプトをスキップするには、次のようにします。

lftp -e 'set sftp:connect-program ssh -axi key.pem' sftp://user:@host

そして、プロンプトで を実行しますdu(または、du -ba各ファイルとそのサイズをバイト単位で一覧表示するか、du -haサフィックスを使用します) 。これは、ディスク使用量ではなく見かけのサイズを示し、ディレクトリ ファイルのサイズを含まないという点で、sftpUnix コマンドと異なることに注意してください。du

4日以上前のファイルがリストに表示されない場合はls、ファイルが存在しないか、もう存在しないことが最も可能性の高い説明です。またはクライアントlsのコマンドは、sftplftpSFTP プロトコルの「ディレクトリ読み取り」クエリまたは一連のクエリディレクトリの内容を取得します。サーバーがディレクトリの内容を送信せず、SFTP 以外でデータにアクセスする方法がない場合は、他にできることはほとんどありません。

関連情報