優れたファイルコピーツールはありますか?


8

コピーダイアログが残り0秒で止まっています...

大きなファイルをUSBペンドライブ(任意の形式)にコピーしようとすると、常に最後の時点で停止します。久々に終わります。

Ask Ubuntuで同様の投稿を検索したところ、たくさんの投稿がありましたが、良い解決策はありませんでした。

WindowsでTeracopyのような他のコピーツールはありますか?

または私ができる修正はありますか?

ここに画像の説明を入力してください


また、参照用にアップロードする必要があるファイルを教えてください
Severus Tux

2
確かではありませんが、問題はUSB書き込みキャッシュに関連していると思います。それを無効にする方法についての投稿を検索してください。全体のコピープロセスは遅くなりますが、その時点で完了したように見えたら、実際に完了する必要があります。
バイトコマンダー

@ByteCommander遅くなると、実際の速度を意味するですか?
Severus Tux

2
私はそのトピックについてあまり詳しくありませんが、キャッシュは、USBデバイスに書き込みたいデータをメモリに保持し、バスまたはデバイスがビジーでないと判断した場合、または方法を最適化できる場合に、後で実際に書き込みます。データブロックを一緒に保存するには...これにより、実際の物理的な書き込み速度が(大幅に)向上することはありません。コピープロセスは、書き込むすべてのデータがキャッシュに格納されるとすぐに終了することを報告するので、速く見えるだけです。ただし、キャッシュをデバイスに書き込むにはまだ時間がかかります。キャッシュが書き込まれる前に、それをすぐに取り外すことはできませんでした
バイトコマンダー

はい、実際のコピー速度は同じです(おそらく、バッファにより、ディスクに何も書き込まれていないが、負荷の軽いシステムではそれほど多くない可能性が低いため、少し遅くなります)が、進行状況ダイアログより正確になります。
ホッブズ

回答:


6

これについてはあまり気にする必要はありません。
USBペンドライブが「低品質」である可能性があります。
時間に関するダイアログ出力は誤解を招くものです。

他のコピーツールでは出力動作
が異なる場合がありますが、USBドライブの書き込み速度は向上しません。
すべての最も重要なことは、最終的にコピーアクションが成功することです。

できることは、ディスクの入出力スケジューラを最適化することです。

rootとしてgksuファイルを編集するためにインストールします(まだ行っていない場合)gedit

sudo apt-get install gksu  

次に、さまざまなディスクタイプに対して実行中のすべてのプロセスの優先度を最適化します。

gksudo gedit /etc/udev/rules.d/60-schedulers.rules

次の行をこの空のファイルに貼り付け、後でファイルを保存します。

# set cfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"  

行った変更は、オペレーティングシステムの再起動後に有効になります。

また、Ubuntuリポジトリで別のコピーソリューションを利用できます。

sudo apt-get install dirdiff  

端末からツールを起動して、ファイルやフォルダを比較またはコピーします。

dirdiff

dirdiffGUIdiffあり、最大5つのツリーを処理できます。メインウィンドウに、ツリー間で異なるファイルのリストが表示されます。バージョンの相対的な経過時間を示す色付きの四角形が付いています。メニューを使用すると、2つのバージョンの違いを別のウィンドウに表示できます。別のメニューでは、ファイルとフォルダを1つのツリーから別のツリーにコピーできます。

概要:最も重要なのは、USBディスクの品質とその書き込み速度機能です。


7

コピーがあなたのやり方で行われているのを見る理由は、USBドライブへの書き込みが非同期だからです。

ファイルをコピーすると、コンピューターのRAMにあるUSBドライブのバッファーに実際にコピーされます。コピーの最初の部分はバッファに入るだけなので、非常に高速です。データがフラッシュされますバッファからUSBドライブへの転送速度がはるかに遅くなります。バッファーがいっぱいになると、バッファーにデータを配置できるようになる前に、データの一部がディスクにフラッシュされるのを待つ必要があります。これにより、コピーの速度が低下し、USBドライブの速度に到達します。すべてのファイルがバッファに配置されると、ファイルがコピーされたように見えます。ただし、すべてのデータがバッファからUSBディスク自体にフラッシュされたわけではありません。一部のコピープログラムは、戻ってそのフラッシュをバックグラウンドで実行させます。一部のユーザーは、すべてのデータがフラッシュされるまで待機するため、しばらくの間100%のままになります。

ディスクを同期モードに切り替えることができます。つまり、バッファーを使用せずにすべてのデータがUSBドライブにすぐに書き込まれます。これにより、データの転送がスムーズになったように見えますが、実際には全体的に速度が低下する可能性があります。

コマンドラインから手動でディスクをマウントする場合は、追加でき-o syncます。

fstabを使用してマウントする場合は、syncオプションを追加できます。

Ubuntuでのマウントに依存している場合は、GUIでアクセスしてマウントすると、マウント後にコマンドラインからマウントオプションを変更できます。

sudo mount -o remount -o sync /media/yourname/diskname

2
これはある答え。
kos

2

問題は、ファイルがターゲットドライブに完全に書き込まれる前に、ファイルが完全に読み取られてメモリに格納されることです。

これは質問に正確に回答することを意味するものではありませんが、pv大きなファイルの場合はコマンドラインから回避策を使用できます。

sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install pv

大きなファイルをコピーする必要があるときはいつでも:

pv /path/to/big_file >/media/username/usb/big_file

これは、パイプで使用した場合、同様の不要なバッファリングの問題が発生することに注意してください。その場合、修正により、転送速度がターゲットドライブの書き込み速度をわずかに超える速度に制限されます。

[...] | pv -L 10M >/media/username/usb/big_file # Limits the transfer rate to 10 MB/s


0
dd if=INPUT_FILE_PATH of=OUTPUT_FILE_PATH bs=$(( 64 * 1024 * 1024 )) oflag=sync

これはifファイルから読み取りof、64MiBチャンクでファイルに書き込み、各チャンクが書き出されるまで待ってから次のチャンクを開始します。使用しているユーティリティは、ファイルをメモリに読み込んでディスクに送信するだけの可能性があります(一度に何バイト実行しているかはわかりません)。書き込みキャッシュは、USBドングル自体に存在する場合もあります。したがって、取得している60MiB /秒の速度は、USB接続を介したドングルの内部キャッシュへの転送速度です。しかし、USB3ドングルでない限り、それはありそうにありません。USB2には、毎秒60MiBを処理するための十分なスループットがありません。


0

上記すべての必要はありません。転送の残りが0%と表示されているときにターミナルウィンドウを開き、syncFrom manページからsyncコマンドを入力するだけで、ファイルシステムバッファーがフラッシュされますが、当然、権限のあるバッファーのみがフラッシュされます。それらをすべてフラッシュしたい場合はsudo sync

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.