Archive for the ‘bash’ Category

terminal

あるディレクトリの中の検査データを圧縮して、同じネットワーク内のNASに保管するようにしました。

シェルスクリプトで実装したのですが、そのファイル自体はシステムのどこにでも置けるようにしたかったので、ターゲットのファイルまでは絶対パスで記述していました。

しかし、絶対パスで圧縮をかけると、ファイルの展開時に/からのツリー構造がまるっと出力されるのでした。

調べてみると、展開時に必要な部分のみを取り出すような方法もあるようなのですが、面倒くさそうだったので、以下のように実装しました。

何か、ルートからのツリー構造を含めないように絶対パスで圧縮指定をする方法はあるのかな?

ちなみにZIPよりtar玉にしてしまった方が、サイズは半分くらいになったのですが、Windowsからデータにアクセスする人もいるのでzip圧縮を選びました。

あとは

を実行して

で毎日19時にバックアップを実行するようにしました。

余談だが、sambaを介してのNASへのアクセスはユーザー毎の権限が定められている様子。
つまり、

などとして、システム(root)の権限で動くcronによってシェルスクリプトを実行すると、NASにアクセスができない。
あくまで、ログイン権限のある個別ユーザーでのアクセスをする必要がある。

で実行する事が重要です。

terminal

つまりtmuxの入れ子ですね

tmuxの入れ子で検索すると出てきたのかもしれませんが、”tmux ssh 接続先 プレフィクス”とかで検索しても出てこなかったので書いておこうと思います。

たぶん、知ってしまうと簡単すぎて記すきにもなれないのだと思います。

はい、答えはプレフィクスキーを2回押すです。

例えば私はプレフィクスキーをctrl+jに設定しているのですが、SSH接続先のtmuxにプレフィックスキーを送るには

ctrl+jjと押すという事ですね。

よく出来てるなあtmux

terminal

送信

-P #portNumber

scp -Pxxx filename name@hostname :~/

ポート番号指定のオプションは小文字でなく大文字の-Pである。

コロン以下に転送先ホストのディレクトリを指定できる。

例ではfilenameをリモートサーバーのホームディレクトリに転送している。

受信の場合

scp -Pxxx name@hostname:/home/name/Desktop/hoge.txt ./

例ではリモートサーバー側デスクトップのhoge.txtをローカルサーバーのカレントディレクトリに送っている。

また、ファイルだけでなくディレクトリごと送受信するには、オプション -r を足してディレクトリ名を指定する。