Raspberry Pi(Raspbianを実行中)のプログラムを数週間にわたって書いていますが、これまで行った作業を確実に保護したいと考えています。
作成したファイルをバックアップするにはどうすればよいですか?
SDカードをWindows(XPまたは7)PCに接続し、ハードドライブまたは別のSDカードにコピーするだけでいいですか?
git
hg
Raspberry Pi(Raspbianを実行中)のプログラムを数週間にわたって書いていますが、これまで行った作業を確実に保護したいと考えています。
作成したファイルをバックアップするにはどうすればよいですか?
SDカードをWindows(XPまたは7)PCに接続し、ハードドライブまたは別のSDカードにコピーするだけでいいですか?
git
hg
回答:
すべてのデータを保持する場合は、おそらくディスクイメージを作成する必要があります。さらに、Windowsは典型的なLinuxファイルシステムを認識できないため、SDカードを差し込んだときにファイルを見ることができないでしょう。
ディスクイメージを作成すると、ファイルだけでなくファイルシステム構造も保持され、新しいSDカードをフラッシュすることにした場合は、プラグインするだけで機能します。
Linuxでは、標準dd
ツールを使用できます。
dd if=/dev/sdx of=/path/to/image bs=1M
/dev/sdx
SDカードはどこにありますか。
Macではdd
、わずかに異なる構文で標準ツールを使用することもできます。
dd if=/dev/rdiskx of=/path/to/image bs=1m
/dev/rdiskx
SDカードはどこにありますか。
(rdiskを使用することは、そのrawデバイスとして望ましい-より高速です)
diskutil list
コマンドプロンプトでデバイスがどのディスクであるかを調べるには、rootになる必要があります。このタイプを実行しsudo -s
、プロンプトが表示されたらパスワードを入力します。
オプション1
Windowsでは、SDカードをフラッシュするときに使用した逆のプロセスを使用できます。
FoundationのSDカードをフラッシュするための推奨ツールであるWin32 Disk Imagerを使用できます。ファイル名(保存するバックアップイメージファイルの場所と名前)を入力し、デバイス(SDカード)を選択してreadを押します。
もちろん、あなたも使用することができますRawWriteを、dd
Windows用または同様のツール、プロセスは非常に似ています。
オプション2
システム全体ではなく特定のファイルのみをバックアップする場合は、SFTP経由でRaspberry Piに接続し、ローカルコンピューターにファイルをコピーすることをお勧めします(WinScpクライアントを使用できます)。SSHを有効にしている場合、SFTPは通常、Raspberry Pi側で特別な構成を必要としません。
別のオプションは、rsyncを使用してファイルをリモートシステムにコピーすることです。
Windowsがext
ファイルシステムを読み取ることができるように(したがってSDカード全体を読み取ることができるように)特別なドライバーをインストールすることもできますext2fsd
が、おそらく努力する価値はありません。
画像はSDカードと同じサイズになるため、圧縮することをお勧めします。これはgzip
、7zip、WinZip、WinRar などのお気に入りの圧縮ツールを使用するだけで実現できます。
Linuxを実行している場合は、dd
コマンドを使用してイメージの完全バックアップを作成できます。
dd if=/dev/sdx of=/path/to/image
または圧縮の場合:
dd if=/dev/sdx | gzip > /path/to/image.gz
sdx
SDカードはどこにありますか。
バックアップを復元するには、コマンドを逆にします。
dd if=/path/to/image of=/dev/sdx
または圧縮された場合:
gzip -dc /path/to/image.gz | dd of=/dev/sdx
:)
)
bs=1M
または私がやったように)間違いを犯さないでください。512バイトのデフォルトのブロックサイズはなり殺すコピーのパフォーマンスを。
これらのブロックレベルのバックアップに加えて、ソースに対処するための2つの一般的なアプローチがあります:継続的にアーカイブする(1)、またはリビジョン管理システムを使用する(2)。
コマンドライン(ローカル端末またはRaspberry PiマシンへのSSH接続)を使用しますか?
1.アーカイブ
cd ~/projects
tar czvf your-raspberry-project-top-level-dir-v1.0.tgz \
./your-raspberry-project-top-level-dir
scp your-raspberry-project-top-level-dir-v1.0.tgz \
user@backup-host:/home/user/backups/
2. RCS(たとえばGit)
cd ~/projects/your-raspberry-project-top-level-dir
make clean # Or clean it manually using rm (rm ./*.o ./*.pyc)
git init # Create new repo here
git add . # Add source files to the staging index
git status # Verify if it's OK
git commit -a -m "Initial import" # Fix application's source changes
git add remote https://github.com/user/your-raspberry-project.git
git push -u origin master # Sends the sources to your github repo
git pull && git push && git status # Now origin/master is your tracking branch
Macでは使用したくありません/dev/diskn
。/dev/rdiskn
代わりに使用する必要があります。nは、OSがSDカードを識別するために使用する番号です。これにより、コピーに必要な時間が大幅に短縮されます。
したがって、Macで最適なバックアッププロセスを行うには、次のことをお勧めします。
を実行しdiskutil list
、Raspberry PiのSDカードに対応するディスクを見つけます。
$ diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 499.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *7.9 GB disk1
1: Windows_FAT_32 58.7 MB disk1s1
2: Linux 7.9 GB disk1s2
/dev/disk1
私の8GB SDカードは明らかに、Linuxパーティション名も少し手がかりです。
ただし、/dev/disk1
with を使用する代わりに、次のようにdd
使用する必要があります/dev/rdisk1
。
sudo dd if=/dev/rdisk1 of=/path/to/backup.img bs=1m
そして、それを復元するには、単にif
(入力ファイル)とof
(出力ファイル)パラメーターを交換します:
sudo dd if=/path/to/backup.img of=/dev/rdisk1 bs=1m
または、を使用gzip
して、かなりのスペースを節約します。
sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz
そして、画像をコピーしてSDに戻すには:
gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m
たくさんのスペースがあるLinux PCからこのコマンドを実行できます。
ssh root@raspberrypi gzip -c /dev/mmcblk0 > img.gz
前提条件として、.sshキーを生成し、それid_XXX.pub
をにコピーする必要があります/root/.ssh/authorized_keys
。
ライブバックアップであるため、ファイルシステムに問題がある可能性がありますが、Raspberry Piが実際にビジーでない場合は、通常は問題ありません。
次のように、PCで圧縮を行う方がおそらく高速です。
ssh root@raspberrypi dd if=/dev/mmcblk0 | gzip -c > img.gz
ssh root@raspberry dd if=/dev/mmcblk0 bs=1M | pv | gzip -c > img.gz
Windowsを使用している場合:
Win32 Disk Imagerをダウンロードします。
画像の保存に使用するファイルパスを作成します。(私はC:\ RasPi_Bkpを使用します)
Win32 Disk Imagerを実行する
バックアップファイルのパススポットを参照し、ファイル名を入力します。
保存をクリック
ファイルパスの右側にあるドロップダウンに表示されるデバイスが、バックアップするデバイスであることを確認してください。
「読む」をクリックします
待つ。
プログラムがすべてpiユーザーIDに含まれている場合、提案されているように、ファイルシステム全体をバックアップする理由は本当にありません。私がしていることは、ただ一つのIDをバックアップすることです。コマンドを実行します:
tar -czf pi.tgz *
piのホームディレクトリから。pi.tgzファイルが作成され、そこに含まれるすべてのファイルとディレクトリが含まれます(隠しファイルを除く)。次に、このファイルを別のlinuxコンピューターにscpしますが、安全に保管するためにftpするか、どこかにメールで送信することができます。
これにより、バックアップ用にはるかに小さなファイルが作成されます。
途中でインストールしたすべての追加パッケージについて心配しましたか?SDカードを再作成する必要がある場合は、これらのインストールを再度実行するスクリプトを作成し、piのホームディレクトリに保存します。(私はそのようなことのために〜/ binディレクトリを持っています)。インストールを行うために必要なすべてのコマンドを用意して、目的の位置に戻します。変更を記録し、新しいSDカードをすばやく作成できます。次の形式のコマンドが含まれます。
apt-get --assume-yes install apache2 mysqld mysql php5 php-pear
で始める
apt-get update
apt-get --assume-yes upgrade
パッケージの追加を開始する前に、システムも現在のレベルに引き上げられます。
これはpi.tgzファイルにあるため、必要なときに必要になります。
Raspbianを実行し、ddとcronを使用して、SDカードを外部USBドライブに自動バックアップします。
これは本当に簡単なソリューションです。月曜日の午前2時に週に1回実行され、SDカードのイメージを作成します。
バックアップの途中でSDカードが書き込まれるリスクを最小限に抑えるために、lighttpdやcronなどのサービスをシャットダウンするスクリプトを作成し、ddを呼び出してから、バックアップが終了したときにサービスを再開します。
私のブログにスクリプトといくつかの指示を載せました。http://www.stuffaboutcode.com/2012/08/raspberry-pi-auto-backups.html
dd
たsd?
デバイスを使用するのは安全ではありません。
Debianの場合、ddとtarを使用できます。これにより、SDカードの完全なコピーが作成され、外部(SDカードへ)ストレージ、おそらくマウントされたUSBまたはネットワークドライブが必要になります。
dd if=/dev/sdd of=yourbackupfilenamehere.dd
tar zcvf yourbackupfilenamehere.dd.tar.gz
/ dev / sddはSDカードの場所でありof
、出力ファイル名です。
.tar.gz
ddファイルのファイルを作成するのですか?単に実行するgzip
かbzip2
、またはddファイルを直接実行する方が良いと思いませんか?
/dev/mmcblk0p1
と/dev/mmcblk0p2
リスト
stretchと呼ばれるRaspbianの新しいバージョンには、SD Card Copierという非常に初心者に優しいアプリがあります。ddなどのLinuxツールを使用する必要はありません。大きなカードを小さなカードにコピーすることもできます。
左上隅にあるGUI RPiアプリメニューアイコンから開始し、[アクセサリ]に移動して、[SDカードコピー機]をクリックします。
必要なことは、GUI内で数回クリックするだけです!
バックアップSDカードを作成したら、Windowsディスクマネージャーを使用してカードのイメージをWindowsファイルに読み取り、任意のWindowsディレクトリに保存できます。これにより、物理SDカードのみが必要になり、Windows PCに多くのバージョンの画像を保存できます。
もちろん、バックアップカードを作業用コピーとして使用するだけで、元のカードをマスターカードに置き換え、安全な場所にロックすることができます。
カスタマイズしたSDカードの画像を作成するために検索しているときに、この投稿を見つけました。ここでの最良の答えは、SDカードのイメージングについて説明していますが、私が探していたのは、可能な限り画像を小さくするためにファイルシステムを縮小することでした。私はこれを行うための独自のツールを作成し、プロセスを概説しました:https : //raspberrypi.stackexchange.com/a/37899/32585
このAndroidアプリはSDカードを.imgファイルに読み取り、同時に圧縮します:https : //play.google.com/store/apps/details?id=com.redrobe.raspicardimager
Linuxの場合、ラズベリーパイをバックアップするユーティリティを作成しました。これにより、ラズベリーパイの画像も縮小されるため、.isoを小さなSDカードに配置できます: RaspberryPiShrink
これにより、プロセスを説明するpythonスクリプトが実行されます。microSDカードをUbuntu、Linux Mint、またはDebainコンピューターに接続し、ターミナルの指示に従ってください。
私はWindows用のusbitを使用しています。これは、大きなSDカードから小さなSDカードに交換できる唯一のツールです。私がしたことは、オプションページで次の項目にチェックを入れるだけでした。サイズチェックを無視し、サイズの大きい画像を切り捨てます。
これにより、OpenELECおよびXbianイメージを16 GBクラス4 SDカードから8 GBクラス10カードに交換できました。
パーティションテーブルなどのサイズ変更よりもはるかに簡単です。
find -type f -exec md5sum {} \; > filelist.txt
ですか?