今回はコンテンツ系ファイルの取り出しの簡易化を試みています。
※圧縮の際のパス間違っていたので修正しました(2020/07/30)。
htdocs/wp-contentの下にある以下のフォルダです。
- plugins
- uploads
- themes
課題
以前に3つのフォルダを圧縮して取り出す方法を記述したのですが、TeratermやらWinSCPやら切り替えがあって非常に面倒くさい。
しかも毎度やることは同じ。
というわけで何とか単純化できないかというが今回の試みです。
ざっくり手順
Windows PowerShellを使ってssh接続もscp接続もする。
後は適当に、バッチ化しておけばちょっと楽になるはず。
コード
ファイル名:content-backup.ps1
# **** 移行元のサーバー情報 ****
# ユーザーID
$user_name=Read-Host "接続先のユーザーIDを指定してください"
# ドメイン情報
$domain=Read-Host "接続先のドメインを指定してください。"
# 秘密鍵(.pem)ファイルパス(C:\Users以下に配置しないとアクセス権の問題で失敗します) ex."C:\Users\WordpressKeyPair.pem"
$pemfile_path=Read-Host "秘密鍵(.pem)ファイルの保存先を指定してください。C:\Users\の以下に配置されている必要があります"
# バックアップファイルを保存する先 ex."C:\backup"
$backup_path=Read-Host "取り出したバックアップの保存先を指定してください"
# ログイン情報の作成
$login_info=$user_name+"@"+$domain
# 各ディレクトリを圧縮
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf uploads.tar.gz uploads;"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf plugins.tar.gz plugins;"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content/;tar zcvf themes.tar.gz themes;"
# SCP接続先情報を作成
$uploads_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\uploads.tar.gz"
$plugins_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\plugins.tar.gz"
$themes_tar_path=$login_info+":"+"/opt/bitnami/apps/wordpress/htdocs/wp-content\themes.tar.gz"
# SCP接続してローカルに保存
scp -i $pemfile_path $uploads_tar_path $backup_path
scp -i $pemfile_path $plugins_tar_path $backup_path
scp -i $pemfile_path $themes_tar_path $backup_path
# 圧縮ディレクトリを削除
"不要になった圧縮ディレクトリを削除しています。"
ssh -i $pemfile_path $login_info "cd /opt/bitnami/apps/wordpress/htdocs/wp-content;rm -f /uploads.tar.gz;rm -f /plugins.tar.gz;rm -f themes.tar.gz;exit;"
ファイル名:content-backup.bat
powershell -NoProfile -ExecutionPolicy Unrestricted .\content-backup.ps1
pause
使い方
- wordpress_backup.batとwordpress_backup.ps1を同じフォルダに配置
- wordpress_backup.batを実行する
- 「接続先のユーザーIDを指定してください」と聞いてきたら
- → たぶんbitnami
- 「接続先のドメインを指定してください」と聞いてきたら
- → 自分のwordpressのドメイン。IPでも可
- 「秘密鍵(.pem)ファイルの保存先を指定してください」と聞いてきたら
- → teratermとかでつなぐときのファイルパスを指定
- C:\Users以下のフォルダに置かないとアクセス権の絡みで失敗する
- 「取り出したバックアップの保存先を指定してください」と聞いてきたら
- 保存したい場所を適当に指定。
パスの指定は""(ダブルクォート)で括っておいた方が無難。
空白がなければ無しでも良い。
UTF-8だと文字化けするので、wordpress_backup.ps1はShift-JISで保存した方が良いです。
課題
不要になった圧縮ディレクトリを削除しています。
で止まってしまうケースがあります。
恒久的な対策が見つかっていません。しょぼい・・・。
暫定処置としては、Enterキーを何回か押してください。
最後まで処理が進みます。
ダウンロード
一応サンプルを置いておきます。
大したトラブルは起きないと思いますが、ご使用については自己責任でお願いいたします。
まとめ
次はMySQLデータのダンプですかね。
ssh接続時にrmコマンドを実行するとsshを終了しない対策、誰か教えてください。
おわり
コメントを残す