web-dev-qa-db-ja.com

NTFSパーティションをext4に変換する-データをコピーする方法は?

D:\パーティションとすべてのデータをNTFSからext4に変換したかったのですが、インターネットから次のように指示されました。

  1. すべてのパーティションを最小サイズに縮小します
  2. データをバックアップします(GPartedでパーティションのクローンを作成します)
  3. パーティションをext4にフォーマットします(まだ完了していませんが、それほど難しくはありません)
  4. バックアップをドライブにコピーします
  5. バックアップを削除し、すべてのパーティションを拡大します

パート4の方法がわかりません。フォルダの場合と同じように、ドライブ全体を実際にコピーできますか?これに特化したツールはありますか?システムやシンボリックリンクなどによって隠されているフォルダを見逃さないようにするにはどうすればよいですか?私はUbuntuライブUSBスティックを持っています。それが重要な場合は、そこから作業できます。

2
piegames

1. FreeFileSync GUIツール(Windows、Mac、Linux)

データを見逃さないようにするために、 FreeFileSync のような優れたファイルコピーツールを使用することを強くお勧めします。これはグラフィカルで、無料で、無料でオープンソースであり、クロスプラットフォーム(Windows、Mac、Linux)です。それを台無しにして逆方向にコピーして、すべてを削除しないように注意してください!ただし、グラフィカルで非常にユーザーフレンドリーであるため、正しく理解するのは難しくありません。

左側にsource、右側にdestinationを指定してフォルダを設定し、の歯車をクリックします。右上にある[ミラーリング]オプションを選択して左から右にミラーリングし、左上の[比較]ボタンを押します。何をコピーする必要があるかを決定すると、何をするか(作成、上書き、または削除するファイルの数など)を示す情報画面がポップアップ表示されます。ゴミ箱の横に何も表示されていないこと(削除する内容を示している)、またはexpectedファイルが表示されていることを確認します(ゴミ箱とマイナス記号を押してから、「同期」ボタンを押して開始します。出来上がり!使いやすい。これがスクリーンショットです: enter image description here

2. rsyncコマンドラインツール(Linux、Cygwinを搭載したWindows)(別名:「rsyncの使用方法」):

Linuxからコピーを行う場合は、もちろんFreeFileSyncを使用することもできますが、コマンドラインの第一人者であれば、 rsync の方がよいでしょう。これはコマンドラインのみのツールであり、使いにくいですが、双方向の同期をうまく処理できないため、FreeFileSyncほど強力ではありませんが、それでも非常に強力です。これが私のお気に入りのrsyncコマンドのいくつかです:

  1. ソースから宛先にコピーし、競合していないものを宛先にそのまま残します。

    Sudo rsync -rah --stats --info=progress2 '/path/to/source' '/path/to/destination'
    

    必要に応じて、--verbose、または単に-v(または私の場合は-rahv)を追加して、コピーされる内容の完全なリストも取得します。

    必要に応じて、--dry-runを追加して、willが発生することを示しますが、実際にはまだ実行していません。

    オプションで、コピーするファイルのリスト全体をこのようなstdout.logファイルに記録し、エラーがあればこのようなstderr.logファイルに記録することもできます。ここでは、--info=progress2を削除して進行状況インジケーターを削除します。これにより、ログファイルがどこでも進行状況情報で汚染されないようになります。

    (Sudo rsync -rah --verbose --dry-run --stats '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    

    実際にコピーを作成する準備ができたら、上記から--dry-runを削除します。スクリプトを実際に実行する前に、stdout.logファイルの最後にある統計段落の印刷出力(--statsがあったために印刷された)を確認して、すべてが良好に見えることを確認してください。

    以下のMIRRORオプションを実行して得られた--stats出力の例を次に示します。一部のファイルを削除していることに注意してください。ファイルの削除は元に戻せないので、注意してください(少なくとも特別なソフトウェア回復ツールがないと)。完全に削除するであり、ある種のごみ箱などに送るのではないことに注意してください。

    ファイル数:102,033(reg:89,638、dir:9,867、link:2,502、special:26)
    作成されたファイルの数:3(reg:3)
    削除されたファイルの数:9,861(reg:9,360、dir:474、link:27)
    転送される通常のファイルの数:25
    合計ファイルサイズ:8.12Gバイト
    転送されたファイルの合計サイズ:35.30Mバイト
    リテラルデータ:35.30Mバイト
    一致したデータ:0バイト
    ファイルリストサイズ:917.43K
    ファイルリストの生成時間:0.007秒
    ファイルリストの転送時間:0.000秒
    送信された合計バイト数:38.33M
    受信した合計バイト数:102万

    送信38.33Mバイト受信102Mバイト7.15Mバイト/秒
    合計サイズは8.12Gスピードアップは206.37です

  2. ソースから宛先へのMIRRORへ。これは、delete宛先内のnot insource(上記の統計出力の「削除されたファイルの数」行)、--delete --delete-excludedを追加します(まだ何も除外していませんが、--exclude=PATTERN構文について学習すると、--delete-excludedフラグも必要であることがわかります)。

    まず、safeドライランバージョン:

    (Sudo rsync -rah --verbose --dry-run --stats --delete --delete-excluded '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    

    そして今、危険危険危険-ソースと宛先を逆方向に実行するとすべてが削除される可能性がありますバージョン(続行する前にstdout.logの最後にある統計出力を確認してください):

    (Sudo rsync -rah --verbose --stats --delete --delete-excluded '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    

    そして今、ライブの進行状況と最後の統計段落を表示したいが、ログがない場合に備えて、ログファイルに保存されないバージョンstdout.logでコピーまたは削除された個々のファイル、またはstderr.logで出力されたエラーの数:

    Sudo rsync -rah --info=progress2 --stats --delete --delete-excluded '/path/to/source' '/path/to/destination'
    
  3. そして、これはrsyncの始まりにすぎません。マニュアルを読む:man rsync、またはオンライン: https://linux.die.net/man/1/rsync そして、上に示したオプションの多くを組み合わせて組み合わせることができることを覚えておいてください。 。調べるべき他の本当に便利なことには、ファイルとパスのリストをそれぞれ含めたり除外したりするために、source.txtファイルとexclude.txtファイルを設定することが含まれます。これは、オプション--files-from='/path/to/source.txt'--exclude-from='/path/to/exclude.txt'をそれぞれ使用して行います。これは非常に便利です。最後に、これは--relativeオプションと非常によく合います。最終的に、完全なBashスクリプトは次のようになります。

     (Sudo rsync $OPTIONS $SRC $DEST | tee -a $LOG_STDOUT) 3>&1 1>&2 2>&3 | tee -a $LOG_STDERR
    

    ここで、$ SRCはソースパスです(この場合、単に/など、source.txtファイル内のすべてのファイルのrelatedパスすべてをルートディレクトリに相対的なものにするため)、$ DESTは宛先パス、$ LOG_STDOUTは標準出力情報をログに記録する場所へのパス、$ LOG_STDERRは標準ストリーム情報をログに記録する場所へのパスです。 、および$ OPTIONSは次のようになります。

    -rah --verbose --stats --relative --info=progress2 --delete --delete-excluded --dry-run --files-from='/path/to/source.txt' --exclude-from='/path/to/exclude.txt'
    

    そしてもちろん、上記のように、実行内容に応じて、必要に応じて--verbose--relative--info=progress2--delete--delete-excluded、および--dry-runを削除することもできます。

関連:

  1. [MY ANS] https://unix.stackexchange.com/questions/65077/is-it-possible-to-see-cp-speed-and-percent-copied/567828#567828
4
Gabriel Staples