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
tar
3番目のオプションは、リモートディレクトリまたは少なくとも転送するファイルのアーカイブを作成し、そのscp
アーカイブをローカルシステムに転送することです。実際、これはssh
シミュレーションを通じて一度に実行できますscp -r
。
ssh username@remote 'tar -c -f - -C /remote_path .' | tar -x -f - -C /local_path