Spica*

プログラミングの話。

会社で、Mac→Macへデータをrsyncで移行してたんだけど

モノとしてrsync使うとデータ移行楽なの知ってたんですけど、社内PCのデータ移行として利用するの初めてでビクビクしてたけど、とっても便利でした!ファイルのパーミッションもそのままで同期してくれるのが最高に良い。ほとんど元のまま次のPCでも使える。

なんかいくつか思った点があったので、日記にかいとく。

Thunderbirdのデータ移行の例

メーラーThunderbird使ってるけど、公式のバックアップ方法を見るとプロファイルのフォルダをそのまま移行すれば新しいPCでもそのまま利用できそうでした。ああ、じゃあここでrsync使えるかなと思ったので、下記でプロファイルのデータ送って、

$ rsync -av /Users/from/Library/Thunderbird/Profiles/ to@192.168.xxx.xxx:/Users/to/Library/Thunderbird/Profiles/

そいで、一度新しいPCでThnderbirdを開く→閉じるってして、公式の復元方法見ながらプロファイルのフォルダ名を合わせたら全部移行完了でした。 移行に際して、空いてるハードディスクとかなかったし、パーミッション関係心配だったので、すごい便利でした。

半角空白がパスにあると変な場所に送られた

ただちょっとハマったこと。 以下のコマンド使ってFirefoxのプロファイルを送ってたんだけど、なんか一発で指定したパスへ配置してくれなかった。

$ rsync -av /Users/from/Library/Application\ Support/Firefox/Profiles/ to@192.168.xxx.xxx:/Users/to/Library/Application Support/Firefox/Profiles/

上記でファイル送れるんだけど、実際には /Users/to/Library/Application/ へデータが送られた。パスを"(ダブルクォート)で囲んでもダメ。回避する方法あるのかな? 最後は手動でプロファイルフォルダ移動させました。

あとrsync全然関係ないけど古い資料のアーカイブ

僕は全部、お仕事のディレクトリの階層って、 /path/to/work/<お客さんのとこの名前>/<案件の名前>/<いろんなファイル> ってしてるんです。分かりやすいので。 ただ、終わった案件のファイルって大抵使わなくて、でも捨てるとあとあと面倒なことになるので、アーカイブにしておこうと思いました。 ただ、案件のフォルダがまためちゃめちゃ多いので、 /path/to/work/ に以下のシェルスクリプト作って実行、一括アーカイブしました。

#!/usr/bin/env bash

echo "Start archive..."

for comp in `ls`
do
    echo
    if [ ! -d $comp ]; then
        echo "$comp is a file. Skip."
        continue
    fi  

    echo "$comp"
    cd $comp

    for targetDir in `ls`
    do  
        if [ ! -d $targetDir ]; then
            echo "$targetDir is not a directory. Skip."
            continue
        fi  
        if [ -e $targetDir.tar.gz ]; then
            echo "$targetDir is already compressed. Skip."
            continue
        fi  

        echo -n "Start compress $targetDir ..."
        tar zcf $targetDir.tar.gz $targetDir
        rm -rf $targetDir
        echo "Compressed."
    done
    echo
    echo "Finished $comp."
    cd ../ 
done

載せるほどじゃないんですけどね…なんにせようまくアーカイブできてよかった。

今年はあまり各方面で顔を出さなかったけれど、ぼちぼちやってるので、また来年はアウトプット増やせるように頑張るます。