1つのディレクトリに110個の大きなファイルがあります。ただし、50分後にシステムがタイムアウトしてすぐにコピーすることはできません。ファイル1〜10、次の11〜20、次の21〜30などをコピーしたいです。順序は重要ではありません。コマンドラインを作成するたびにcp
10個のファイルをコピーしたいと思います。cp
ファイル番号11〜20(頭や尾ではない)をコピーするにはどうすればよいですか?
PS:私のラップトップはMacBookです
ファイル名にスペースが含まれています。
答え1
rsync -ai /path/to/source/directory/ /path/to/destination/directory
rsync
これは、ソースディレクトリのすべてのファイルをターゲットディレクトリにコピーするために使用されます。複製が中断された場合は、同じコマンドを再実行して複製を再開できます。
オプション-a
(--archive
)はファイルのメタデータ(所有者、権限、タイムスタンプなど)を保存します。これは、後続の実行で転送するファイルと転送しないファイルを決定するために使用されます。
オプション-i
(--itemize-changes
)を使用すると、rsync
各転送に関する情報が出力されます。
存在するコメントAWS S3バケットに対してこれを実行したいと思うかもしれません。
この場合、以下を使用できます。
aws s3 sync /path/to/source/directory/ s3://bucket/path/to/destination/directory/
何らかの理由でコンピュータが切断された場合は、再起動することもできます。
また、見ることができます
注:私はAWSユーザーではないため、これをテストすることはできません。
答え2
使用牛に似た一種の栄養 find
、、、xargs
およびcp
これにより、一度に10個のファイルがコピーされます。
d="destination_directory..."
s="source_directory..."
find "$s" -type f -print0 | xargs -0rn 10 cp -n -t "$d"