気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

MacのTime machineによるバックアップに最適なHDDを調査

今日は、プログラムのお話ではなく、PCバックアップについてです。 重要なファイルのみのバックアップしかしておらず、 危うく他のデータを吹っ飛ばすところだったので、 ちゃんとバックアップしとかなきゃと調べました。。

まずTime machineとは?

Mac標準のバックアップアプリ

  • バックアップ単位は、1時間ごと、日次、週次と選択可能。初回以外は差分バックアップ
  • 外付けHDDまたは、Time Capsule(Mac純正)にバックアップ
  • フォーマットは「Mac OS拡張」(HFS+)、FAT32などでは使用不可

バックアップに必要な容量

最低バックアップと同じ容量。 余裕を持って2倍ぐらいの容量があると望ましい。 コスパを考えて、バックアップ以外のデータも保存する場合は、3,4倍あると良い。

512GBなら、2倍で1TB、3倍で1.5TB

バックアップ範囲

デフォルトで全体バックアップだが、 バックアップ範囲から除外する設定も可能。

Mac Time Machineのバックアップから除外するフォルダを指定する方法
http://inforati.jp/apple/mac-tips-techniques/system-hints/how-to-exclude-a-folder-from-macos-time-machine-back-up.html

最適なHDDを選ぶ 2018/07/26時点

私は、SSDが256GBなので、バックアップには500GBほど使用。 パーティション分けして、1TBに写真の保存用とするため、 1.5TBのHDDを選びました。

価格が1万以下で、ある程度持ち運びが楽な重さ。 かつよく物を落とす方なので、衝撃耐性の高い製品を選択。

WD HDD ポータブルハードディスク 1.5TB

→231gで軽め、フォーマットはMac用でないので再フォーマットが必要。。USB3.0で高速転送、安心の2年保証に惹かれました。

以下のサイトが非常に参考になりました。
HDD比較サイト_1
HDD比較サイト_2

[補足]再フォーマット、パーティション分け

HDDをMacに接続し、ディスクユーティリティで購入したHDDを選択。
マック内臓のSSDを初期化しないようによくよく注意して作業してください。
パーティションタブで、パーティションを分け、自分が想定する容量とフォーマット形式を選択。
適用し、パーティションテーブルはそのままで、OKと進める。

詳細はこちらを参考にしてください。

Macのハードディスクをフォーマット(初期化)する方法 / Inforati

AWSのS3基本コマンド

基本コマンド

良く使う基本のコマンドを表にして見ました。

操作 コマンド 備考
バケット参照 aws s3 ls
バケット内参照 aws s3 ls s3://バケット
バケット作成 aws s3 mb s3://バケット
バケット削除 aws s3 rb s3://バケット バケット内が空でないと消せません
オブジェクトコピー aws s3 cp オブジェクト名 s3://バケット ローカル→S3、S3→ローカル、S3→S3でのコピー可
オブジェクト削除 aws s3 rm s3://バケット名/オブジェクト名 --recursive オプションでディレクトリを再帰的に削除
移動 aws s3 mv s3://バケットA/オブジェクトA s3://バケットB/(オブジェクトB) ローカル→S3、S3→ローカル、S3→S3での移動可
同期 aws s3 sync ディレクトリ s3://バケット名/ディレクト ローカルのディレクトリを同期

正規表現で複数ファイルをコピーする

aws s3 cp *.txt s3://[バケット名]/

上記のように指定したくなるが、エラーになる。aws s3ではファイル指定に「*」が使えないです。

上記を実現したい場合は、excludeとincludeを用いて以下のように指定します。

aws s3 cp test s3://[バケット名]/ --recursive --exclude "*" --include "*.txt"

testディレクトリ以下の拡張子がtxtのファイルのみをコピーするコマンドになります。

excludeを省略したくなりますが、省略すると全ファイルがコピー対象になるのでご注意を。
excludeのみの指定は可能です。

一括削除の際は確認コマンドを使う

--dryrun オプションを付けるとどのように削除されるか確認できる
$ aws s3 rm s3://hogebk --recursive --dryrun
(dryrun) delete: s3://hogebk/hoge/test1.txt
(dryrun) delete: s3://hogebk/hoge/test2.txt

MySQL Indexの作成、参照、変更、効果確認コマンド

Indexの作成

-- 通常インデックス
create index idx_name on table_name (name);

-- 複合インデックス
create index idx_group_id_name on table_name (group_id, name);

Indexの参照

作成したIndexを確認する

show index from table_name;

Indexの削除

誤って作成したIndexを削除する

alter table table_name drop index idx_group_id_name;

Indexの効果の確認

EXPLAIN select * from table_name where name = 'test';

bash ファイル圧縮、S3転送を行うスクリプト

aws s3設定済みの前提。

#!/bin/bash

for file in `ls dump_*.sql | cut -d'.' -f1`; do
  tar --remove-files -zcvf "$file".tgz "$file".sql
  aws s3 cp "$file".tgz s3://dump/
  STATUS=$?
  if [ $STATUS = 0 ]; then
    rm -fr "$file".sql
  fi
done

gitクライアントツールのssh設定

TortoiseGit、SorceTreeのssh設定をまとめてみます。
2つ使う理由としては、TortoiseGitが差分が見やすい、 SorceTreeは現状が視覚的に見えるので。

TortoiseGit

参考URL

秘密鍵と公開鍵を生成

TortoiseGitをインストールした後に、 TortoiseGitのディレクトリ内にある「PuTTyPuTTYgen」を起動

Generateを押した後にマウスをぐりぐりと動かし、キーを作成。

Save private keyでを押して、praivat.ppk(秘密鍵)を作成。
Save public keyを押して、public.ppk(公開鍵)を作成。

TortoiseGitでの設定

右クリで表示する「Git Clone」のメニューを開いて

Load Putty Keyのところで、作成したprivate.ppkを設定。
これでリポジトリにある公開鍵で鍵がかかった情報に秘密鍵で鍵を開けに行き、
情報を取得できるようになる。

あとは、取得先のリポジトリURLを指定すればOK

Source Tree

秘密鍵と公開鍵を生成

「メニュー」→「ツール」→「SSHエージェントを起動」
PuTTYを立ち上げる。TortaiseGitと同じ要領でKeyを作成。

秘密鍵の登録

「メニュー」→「ツール」→「Launch SSH Agent」→「Pagentを起動」

Add Keyボタンで作成した秘密鍵を登録してパスワードを入力

Pagentは、pullやpushの際に毎回、パスワードを聞かれなくしてくれるツールです。

Git Clone設定

元のパス:リモート先のリポジトリURL
保存先パス:ローカルリポジトリのパス

以上です。

Javaシステム開発、新しい現場で押さえておきたい情報

サービス、アプリ

広告系、ECサイトandroidアプリなど
サービスによって、求められる技術が変わってくる。

社風

残業推奨か、残業制限か。
社員の顔色はどうか笑。顔色が悪い場合、サービスやシステムも思わしくない場合が多い。

業種にも寄るが、髪型・服装・喋り方などでもある程度わかる。

使用言語

Java, JavaScript(JQuery), Perlなど。RubyC++などサブで使っているかなども押さえておきたい。
どのくらいの割合で使うのか。

Junit単体テスト書いているか。書いているところは、企業体力ある気がする。
テストに工数さけるってことだから。

使用フレームワーク

フロント、サーバー、DBアクセスなどフレームワーク
独自フレームワークでないことを願いたい。

ソース管理

CVS(もうないか)、SVN、Git。 最近、ずっとSVNだったけど、Gitになったから復習しないとわかんね。

ビルド、デプロイ

Ant, Maven, gradle ビルドツール。大事だよね。gradleって便利なのかな。使ったことない。
Jenkins。Javaで他にCIツールってあるのかな。

ミドルウェア

Apche、Tomcat、Nginx。サーバー周り。
OraclePostgreSQL これはどれでもいいかな。DBMS毎のクセのあるSQLの書き方はいけない気がするし。