Bash - パラメータリストが長すぎます。

Bash - パラメータリストが長すぎます。

scpリモートサーバーからローカルコンピュータに約115,000のjsonファイルを含む大きなフォルダをインポートしたいと思います。

次のようなものを使用するとします。

scp username@remote:/remote_path/*.json /local_path/

ただし、これを実行しようとすると、次の応答が表示されます。

argument list too long

では、ファイルをどのように転送しますか?

ベストアンサー1

個々のファイルの代わりにディレクトリ全体を転送することを検討してください。

scp -r username@remote:/remote_path /local_path/

転送量が多すぎて.json名前が単一のディレクトリで終わるファイルだけを転送したい場合は、次の点を考慮してくださいrsync

rsync -av --include='*.json' --exclude='*' username@remote:/remote_path/ /local_path/

他の名前は無視して名前で終わるファイルのみをコピーします.json。これには終了ソースが必要です/

このオプションを使用すると、詳細な操作の代わりに-aファイルメタデータ(デフォルトではタイムスタンプ)も送信され、サブディレクトリに再帰されます(ただし上記の制限がrsync適用されます)。--exclude-v

tar3番目のオプションは、リモートディレクトリまたは少なくとも転送するファイルのアーカイブを作成し、そのscpアーカイブをローカルシステムに転送することです。実際、これはsshシミュレーションを通じて一度に実行できますscp -r

ssh username@remote 'tar -c -f - -C /remote_path .' | tar -x -f - -C /local_path

おすすめ記事