Xserverにあるデータをローカルへ自動定期バックアップする(SFTP、SSH接続)

はじめに

今回は、SynologyNASとMac miniのファイル管理システムにおいて、下の赤枠で囲んだ部分について紹介します。AppleシリコンのMac miniを常時稼働してサーバーのように使う人が、これからどんどん増えるように思えます。そうなってくると、今回紹介するミニシステムは、定番の一つになると想像します。

Xserverにあるデータをローカルへバックアップする(SFTP、SSH接続)

Xserverは、契約すれば無料で1週間分のバックアップがついてくるから、なんでわざわざローカルにバックアップなんか必要なの?

そのような疑問は確かに起こります。

Xserverの無料バックアップからの復元は、申し込んだあとに心配がおきます。つまり、いつ処理が開始していつ頃終了するのか分からないので、ただ待つしかないのです。私の経験からは30分で済むこともあれば3時間かかることもあります。時間が読めないこと、それは結構ストレスです。またその時間を大幅に短縮したいです。出来れば10分以内。そのためには、前夜の状態のファイルがローカルにバックアップされていれば大丈夫でしょう。そのバックアップするフォルダは、WordPressのフォルダが対象なので、uploadsとthemesがあれば十分でしょう。

以前に、Transmit5のFTPを使ってXserverへアップロードする方法を紹介しましたが、今回は、Transmit5のSFTPすなわちSSH接続を使って、Xserverからダウンロードを行う方法、しかもそれを自動運転にする方法を紹介します。

なかなかMacを使ったSFTP、SSH接続の日本語での解説ブログやYouTubeは見当たりませんね。

5手順と長くなりますが、よろしくお付き合いください。

ポイント解説

手順1  XserverのSSH接続を開通させる

(1) MacでSSHキーを作成
以下を行うと、id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます。

ssh-keygen -t rsa -b 4096 -C "your-email@example.com"

(2) 公開鍵をXserverに登録

id_rsa.pubの内容をコピーして、Xserverの管理画面に登録します。

1)id_rsa.pubは、隠しファイルになっているので、Finderの右上の虫眼鏡にid_rsa.pubと入れて、見つけてください。それを、テキストエディット.appで開く→内容をコピー。

2)Xserverのサイトに入る→サーバーパネル→SSH設定をON

 初期設定の段階なので、とりあえず「ON[すべてのアクセスを許可] 」を選択します。
※2024/11/25現在、国内からのアクセスのみ許可に変更

(3)公開鍵登録・更新→(2)1)でコピーした公開鍵をペースト→確認画面へ進む→登録する。



(4) 接続の確認

ターミナルへ以下を入れて接続してください。

ssh -i ~/.ssh/id_rsa -p 10022 your-username@your-server

Xserverの場合、

ssh -i ~/.ssh/id_rsa -p 10022 your-username@your-username.xsrv.jp

となります。

接続が成功したら、一旦、ターミナルはexitを入れて終了してください。

手順2 Transmit5アプリを使って、SFTPにて、単独でバックアップできるようにする

赤く消してあるところは、ユーザ名が入ります。1(1)で作成した秘密鍵、id_rsa、を、パスワードまたはキーの右側のキーのアイコンをクリックして認証鍵を入れるボックスを開き、その中に登録します。登録は、このボックスの下にある+のマークをクリックすると、親切に通常は非表示のフォルダも表示されてid_rsaが選択出来ます。登録されたらid_rsaの上をタップすると、キーに収まります。
XserverにおけるSSH設定の条件はここに記載されています。

上と同様に、SFTP_uploadsも作成します。

手順3 バックアップ用のアプリを作る

上で作った単独バックアップを起動させて動作した後に終了する流れを、Automatorで一つのアプリとして作成します。まず、SFTP_themesは以下です。

Automatorで新規作成→アプリケーションを選び、Transmit.appを選びます。接続先の選択肢にTransmit5にお気に入り登録したものが出てくるので、SFTP_themesを選びます。すると、サーバ、ユーザ名、パスワード、ポート、プロトコルは、引っ張ってきて入ります。それ以下の項目は設定します。

同期の方向:ダウンロード(今回の場合はダウンロードです。ここは要注意!!)

比較の方法:変更日

スキップ項目:なし

ローカルパス:これは、Finderで探して設定します。自分があとで扱いやすい場所。

オプション:同期先のみに存在する項目は削除する。(単純なバックアップ目的のダウンロードは、チェックを外します)

リモートパス:リモートサーバとの時差を自動で調整する。一応チェックを入れておきます。

処理が済んだら、Transmit5を終了→Automatorを終了します。

次に同様に、uploadsフォルダのダウンロードである SFTP_uploadsも同様に設定します。このように小分けする理由ですが、ダウンロードは結構、エラーが起きやすく、あまり大きなフォルダですとやり直しに多大な時間が掛かります。ですので、例えば初期ダウンロードで10分程度で済むサイズで区切るとか、小分けにした方がいいです。

手順4 複数の単独アプリを流れとして組む

Automatorで作成した単独アプリを流れとして組み込みます。なお、完了の通知としてメールを使います。夜中の自動処理を設定すると、本当に処理が行われているかどうか心配になります。メール一つあるだけで安心します。

AppleScriptを使います。まとめたアプリをSFTP_themes_and_uploads.appとします。

-- スクリプト開始
on run
	-- SFTP_themes.app を起動
	tell application "SFTP_themes"
		activate
	end tell
	
	-- アプリが終了するまで待機
	delay 10 -- アプリの自動終了までの目安時間(必要に応じて調整)
	
	-- 1分間待機
	delay 70
	
	-- SFTP_uploads.app を起動
	tell application "SFTP_uploads"
		activate
	end tell
	
	-- アプリが終了するまで待機
	delay 10 -- アプリの自動終了までの目安時間(必要に応じて調整)
	
	-- メールを作成して送信
	tell application "Mail"
		set newMessage to make new outgoing message with properties {subject:"SFTP_themes_and_uploadsは完了しました。", content:"M1 Mac自動処理", visible:false}
		tell newMessage
			make new to recipient at end of to recipients with properties {address:"xxxxxx@gmail.com"}
			send
		end tell
	end tell
end run

手順5 自動処理させるために、カレンダーに組み込む

Macのカレンダーには、「通知」の機能の中にあるカスタムに、「ファイルを開く」がありここでアプリを起動することができます。

カレンダーからは、アプリは起動するだけで、終了の動作は行いません。終了の動作は、取り付けるアプリの中に組み込まれている必要があります。

開始:日時

終了:日時 ここは、時刻は開始時刻と同じで構いません。

繰り返し:毎日

繰り返し終了:なし

移動時間:なし

通知:カスタム

ファイルを開く SFTP_themes_and_uploads.app これはアプリケーションフォルダから選択、予定の開始時刻を選択

次に、

Macのシステム設定→プライバシーとセキュリティ→カレンダー→SFTP_themes_uploadsのオプションからフルアクセスにする→カレンダーを終了して再度立ち上げます。

その他、まとめ

SFTPによるダウンロードですが、禁止文字の使用など様々な理由でエラーで進まないこともあります。その場合、Xserverで、zipファイルに圧縮してからrsyncでダウンロードすると、順調に行くことが多いです。

Xserver内に圧縮zipファイルを作成する次にMacのrsyncでダウンロードする方法。

以上が、定期的自動的に、外部サーバーにあるデータを、ローカルにダウンロードする流れになります。こうした処理が自宅で簡単に行えるようになってきたのも、Macが、特にMac miniが省電力になり、常時稼働が可能になってきたことが大きいです。

以上