Googleドライブの共有ドライブをローカルPCに定期的にバックアップを取りたい
のですけど、先生!先生!!
2年前位に会社で使っていたローカルサーバー(DELL製)をGoogleドライブに切り替えて、30人くらいの職員が使っている「Googleドライブの共有ドライブ」を私が消してしまった時には、手足が震えましたであります。共有ドライブが消えたのだから、きっと大丈夫。どのごみ箱?完全消去?パニック&パニック!!
結局のところ、私がメンバーから外れたから共有ドライブが見えなくなっただけだったのですが。共有ドライブのメンバー管理を、とあるスプレにある全職員のGoogleアカウント情報を元に、自動でやってくんねーかなーに関するGASを大先生と共に仕上げている時に、突然、最重要共有ドライブが目の前から消えたので、そりゃあもう、自宅の21時30分の私という名の街は大騒ぎ。心臓は早くなるし、なにかしらの液体の流れが早くなるし、ちょっと視界が暗く狭くなるし。手足震えるし。真実を知るまでの地獄の10分間。
Googleだから大丈夫。。とデータ破損に対するバックアップなど私には関係ないと高をくくって来たわけですが、次に仲間になる誰かが、悪意を持って共有ドライブを完全削除したり、今いる仲間がうっかり完全削除したりしても問題ねーっすと澄まして言えるために、私の自宅や会社のパソコン、つまりローカルにバックアップを作っておきたい、おくべき、おかねば。と大先生に相談。
Windowsじゃねえから、シフトデリートできないんだからそんなビビるんじゃねーよ。ゴミ箱から削除しなきゃ30日は問題ないんだよ。
私>でも先生、ゴミ箱から削除されちゃうじゃないですか
権限で管理しろよ
私>でもファックスがJPGで来るので、データ動かせないと仕事にならないので、投稿者ではちょっと無理なんです。やはり最低コンテンツ管理者じゃないと。だから削除もできちゃうし、ゴミ箱も行けちゃう。
ほなバックアップがおすすめやわ。毎日帰る前に手動でやれば?と言われたので、帰る時に鍵をかける事を忘れる俺に?それを?と答える。
デスクトップ版Googleドライブ使ってるんだったらミラーリング設定にしておけばいいじゃん。と言われたが、Googleサーバーが爆発炎上した時には有効だろうけれど、悪意を持って消された時や、間違って全部消しちゃった時には、こっちも消えちゃうからダメですと訴えると、んじゃあRclone使うしかないんじゃね?ちょっとムズく見えるけど。お前が泣いて怖がる黒い奴だけど。
ムズくないのもあるけど当然有料だよ?金払うつもりないんでしょ?と言われたので、RcloneでGoogleドライブの共有ドライブのデータを、自分のパソコンに毎日自動バックアップするまでの道のり(5日分ストック)
やることをまとめると
Rcloneをインストール
Rcloneとドライブをツナゲル(リモート)
Rcloneでバックアップがちゃんとできるようにして
それをWINDOWSにやってもらう
そんな流れです。
Rcloneをググって入ってクローム君に日本語でお願いをしてダウンロードページに行き自分の状況にあったやつをダウンロード。私はWINDOWSでインテル64ビットって事かな?
ダウンロードしたRcloneを解凍(ダブルクリックで開くとき)する時に、解凍場所について大先生はCドライブ直下が良いんじゃね?というので、解凍先をCドライブ直下にする。別にマイドキュメントでもどこでも良いんじゃね?が素人な私の感じだけど、大先生のいう事は出来るだけ聞く。
解凍する際に、Cドライブ直下に解凍するだけじゃなくてフォルダ名を「rclone-v*****-windows-amd64」とかバージョン情報なども含んだ名前から、「rclone」という名前に変更しておく。
これを使う時には恐怖の黒いCMDプロンプトを使う訳ですが、Cドライブ直下に置いたRcloneを使うには、原則現在地マイドキュメントなCMDに対して、毎回CDという「場所変えるで。」という命令を出して自分の居場所をドキュメントからCドライブ直下に移動する必要があるから先にこれやっといて。と大先生に言われ
ウインドウズボタンとエックスを同時押しでメニューを出してシステムをクリック
今度は右に出てくるメニューのシステムの詳細設定をクリック
システムのプロパティ画面の詳細設定タグの下の方にある環境変数をクリック
下の方のシステムの環境変数の枠のPathを選んで編集をクリック
新規をクリック
「c:¥rclone」と入力してOK。自分が何をやっているかなんてわかりませんが、考えちゃだめだ考えちゃだめだ。天皇陛下万歳です。
Windowsボタン プラス アール で CMD で コマンドプロンプトを出すのがそれっぽい。マウスとか普通使いませんよね?がそれっぽい。
CMDに rclone と入れるとできる事出てくる
① リモートのつくり方(PCとインターネット上のデータ置き場をつなぐ事をRcloneでは「リモート」というらしい)
CMDに rclone config と入力 エンター
何やるの?と聞いてくるので n と入力(nはNew remote)
これから作るリモートの名前どうするの?と聞いてくるので入力(なにぶんCMDとかなので半角英数が良いかと忖度)先生の推薦で一番重要な奴をgdriveと名付ける
どのシステムと繋げるの?と聞いてくるので、GoogleDriveちゃんでお願いとご指名。(19)を入力
クライアントIDを聞かれるので、そのままエンターで進む
(わざわざ自力でGoogleとPCを接続する約束事を作らなくても、Rcloneに入っているからそれを使うので必要ない)
クライアントシークレットを聞かれるので、これもそのままエンターで進む
(これもわざわざ自力でGoogleと接続する秘密のキーを作らなくても、Rcloneで作ってくれているキーを使うので必要ない)
接続する場合の権限はどれにするか聞いてくるので、バックアップのダウンロードであれば「1」のフルアクセスで。
サービスアカウントファイルを聞いてくるので、これも空白エンターで進む
(何か特別な接続をする場合には、事前にGoogleと契約して特別なつなぎ方をするので、普通のつなぎ方で充分なので必要ない)
アドバンスド(高度)なコンフィグ(構成)をするか聞いてくるので N しないと入力
接続手続きをこれから行うにあたって、WEBブラウザで行うか?と聞いてくるので Y そうすると入力
ブラウザが立ち上がり、アカウントを確認されるので、アカウントを選択
Rcloneがドライブに関わりたいと言っているけど良いの?と聞いてくるので 続行 を選んで認める。
CMDに戻ってきて共有ドライブ関係するの?と聞かれるので Y はいと答える
カラフルCMDがどの共有ドライブ?と聞いてくるので、ダウンロードしたい適当な共有ドライブを選択
これで全部終わったけど、これで良いか、直すか、消すか、どれにしたい?と言われる。むろんY
これでリモートが完成。何かやりたければQでコンフィグを出る
②ダウンロードの命令(手動単発)
rclone copy gdrive: F:\AW --log-file="C:\rclone\backup.log" --log-level=INFO
内容として
Rclone君、コピーして欲しいんだけど、リモート名gdoriveの接続をね、ローカルPCのFドライブのAWというフォルダに入れてね。ちなみにだけどCドライブのrcloneフォルダにbackup.logというテキストファイルを作って、やった結果を文字で残しておいてね。
リモート名と保存先ドライブやフォルダ名を変更すれば、単発手動として実行できる。私の環境だと30GBくらいの共有ドライブは10時間くらいかかったので、タイミングなどそれなりに考えて実行してくださいね。
③Windowsによる自動実行
今回はCドライブのrcloneフォルダ内にメモ帳で書いたものを「.bat」バッチファイルとして置いておく。バッチファイルとはWINDOWSに簡単な事をやらせる呪文。パワーシェルはもっと難しい事もできちゃう呪文。らしい。知らんけど。
ここまで来た中で、毎日バックアップで5日分保管は過保護かな?と思い始めている。それなりに時間もかかるから、私の自宅パソコンは24時間ずっと何かしらのバックアップをしていることになってしまうので。
超大事な奴は週3回で5回分の保存。他の奴は週1回で2回分保存。ここら辺が落としどころかな?と先生に相談せずに判断してそれをお伝えする。
~~~~~
@echo off set "date=%date:~0,4%%date:~5,2%%date:~8,2%" rem gdriveバックアップ rclone copy gdrive: F:\AW\%date% --log-file="C:\rclone\backup_aw.log" --log-level=INFO rem 5回分より古いバックアップを削除 for /f "skip=5 eol=: delims=" %%i in ('dir /b /ad /o-d F:\AW') do rmdir /s /q "F:\AW\%%i"
~~~~~
先生に説明を求めた答え。
このバッチファイルは、gdriveのバックアップをF:\AWフォルダに実行し、最新の5回分を残して、それより古いバックアップを削除するものです。各部分の詳細な説明は以下の通りです。
1. @echo off
意味: コマンドプロンプトに実行しているコマンド自体を表示しないようにします。これにより、コマンドプロンプトには出力結果だけが表示され、不要な情報が出力されません。
2. set "date=%date:~0,4%%date:~5,2%%date:~8,2%"
意味: 現在の日付を取得し、**年(YYYY)、月(MM)、日(DD)**という形式で date 変数にセットします。
%date% は現在の日付を取得します(例: 2024/09/14)。
~0,4 は年の部分(最初の4文字)を取得します。
~5,2 は月の部分(5文字目から2文字)を取得します。
~8,2 は日の部分(8文字目から2文字)を取得します。
結果: date 変数には、YYYYMMDD 形式の日付(例: 20240914)が格納されます。
3. rem gdriveバックアップ
意味: rem はコメントアウトを意味します。これはスクリプトの実行には影響しませんが、読み手のために説明を入れています。ここでは「gdriveのバックアップを行う」という説明です。
4. rclone copy gdrive: F:\AW%date% --log-file="C:\rclone\backup_aw.log" --log-level=INFO
意味: rclone コマンドを使って、Googleドライブ(gdrive)からF:\AW%date% フォルダにバックアップをコピーします。
gdrive: はGoogleドライブのリモート名です。
F:\AW\%date% はローカルの保存先で、日付フォルダ(例: F:\AW\20240914)にバックアップを保存します。
--log-file="C:\rclone\backup_aw.log" は、ログファイルの出力先を指定しています。バックアップの状況はこのログファイルに記録されます。
--log-level=INFO は、ログに記録される詳細度を指定し、エラーや進行状況などの基本的な情報を記録します。
5. rem 5回分より古いバックアップを削除
意味: rem により、ここでもコメントを入れています。ここでは「5回分より古いバックアップを削除する」という説明です。
6. for /f "skip=5 eol=: delims=" %%i in ('dir /b /ad /o-d F:\AW') do rmdir /s /q "F:\AW%%i"
意味: 5回分より古いバックアップフォルダを削除する処理です。最新の5つのフォルダを残して、それより古いフォルダを削除します。
dir /b /ad /o-d F:\AW: F:\AW フォルダ内のディレクトリ(バックアップフォルダ)を新しい順にリストします。
/b は簡易フォーマットでディレクトリ名だけをリストします。
/ad はディレクトリ(フォルダ)だけを表示します。
/o-d は、新しい順に並べます(最新のバックアップが最初に表示される)。
for /f "skip=5 eol=: delims=" %%i: for ループを使って、最新の5つのフォルダをスキップし、それ以降のフォルダを対象に処理を行います。
skip=5 は最初の5つのフォルダをスキップする設定です。
rmdir /s /q "F:\AW\%%i": rmdir コマンドを使って、指定されたフォルダを再帰的に(サブフォルダも含めて)削除します。
/s はサブフォルダを含めて削除するオプションです。
/q は削除確認を行わずに(quiet)実行するオプションです。
~~~~~
このようなバッチファイルを必要な分だけ置いておく。この場合リモートと何回分保存しておくか?が要素と言える。
私の場合結果的に1つの共有ドライブを週3回バックアップ。3つの共有ドライブを週1回バックアップ。一つのオーナーではない共有化されているフォルダを週1回バックアップ。だったので、先生曰く5つのパッチ作れというのでそうしました。3つでどうにかなりそうだけど、パッチ内容はまったくわからないのでご指示に従う。
必要な分だけバッチを設置したら、タスクスケジューラを開き基本タスクの作成で、タスク名を付け、今回は毎週を選び、実行時間と曜日を選び、実行するプログラム(上記バッチ)を選ぶ。以上でそのタイミングで実行してくれるはずなので、あとは結果を見て思っているのと違う場合は修正していく。
むろん万が一これらの命令呪文が、共有ドライブのデータを削除せよという呪文だったとしても、私は知らずに唱えて大虐殺者となってしまうので、実行前に一度手動でバックアップを実行しておいた方が安心であるのでそうした。前回のトラウマ。世界に平和を。
Rcloneで指定したGoogleドライブをダウンロードする呪文を書き、バッチファイルでその呪文をWindowsが唱えてくれるという呪文を書き、それをタスクスケジューラで決められたタイミングで唱えてもらう仕掛けが出来た。
なんか少し、ほんの少し、黒いコマンドプロンプトが怖くなくなってきた。人間の対応力というか、慣れって凄いなぁ。。。
この記事が気に入ったらサポートをしてみませんか?