Puppyいじりの記録

自己紹介とか、なんでもいいです。
にぎやかに世間話のできる場所

モデレータ: 暇人, YoN, nyu

返信する
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:このコマンドでバックアップしました。

rsync -av /mnt/home/puppy431/pupsave.2fs /mnt/z
fukagorouさんはフラクタル図形のプログラムをするような方なので、細かい説明は不要と思いrsyncの断片的な説明だけをしてしまいました。
すみませんです。

rsyncはディレクトリ間の同期コピーに本領を発揮するツールです。
Windowsではrobocopyに相当します。
本家はrsyncですが。
単体のファイルコピーに使うのは、割り箸を切るのに電動ノコギリ使うみたいなものでちょっとオーバースペックかな(^^;。

rsync -av --delete ソースディレクトリ ターゲットディレクトリ

これでディレクトリの同期コピー、いわゆるミラーリングのバックアップが取れます。
ソースの不要なファイルを削除すれば、ミラーリングなのでターゲットの不要ファイルも削除されます。
タイムスタンプの違うファイルだけがコピーされるので、容量が大きいディレクトリでも高速にバックアップできます。

私はパピーをFrugalインストールしたディレクトリごとバックアップしてます。
sfsファイルを入れたり消したりしても、ミラーリングなのでディレクトリの状態がそのままバックアップされます。
もしもの時はバックアップしたディレクトリごと書き戻せば、パピーの環境が復活します。
個人的なファイルは個人設定ファイルの外のディレクトリに置いているので、それも一緒にバックアップしてます。

使い方の注意はソースディレクトリの末尾に/を付ける、付けないで挙動が変わる事です。
/付けた方が自然な動作になると思います
ターゲットディレクトリの指定を間違えるととても悲惨な事になるので、十分に試してからの使用をお勧めします。
fukagorou さんが書きました:バックアップしたのを戻すには、こうかな。

rsync -av /mnt/z/pupsave.2fs /mnt/home/puppy431
パピーの動作中に個人設定ファイルを書き戻すのは、危険なのでやめた方がよいです。
挙動がおかしくなりませんでしたか?
動作中に可能なのは、個人設定ファイルのコピーだけだと思います。
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

Re: Puppyいじりの記録

投稿記事 by fukagorou »

ルビー さんが書きました:fukagorouさんはフラクタル図形のプログラムをするような方なので、細かい説明は不要と思いrsyncの断片的な説明だけをしてしまいました。
すみませんです。
僕は、Linuxに関しては仕事とかで使ってなかったので、素人なんです。
Linuxは、2014/03/12ごろから本格的に使い始めました。
この”Puppyいじりの記録”が、僕のLinuxいじりのほぼ全てです。
なので、スキルがまだまだなのです。
パソコンをいじる時間もあまり取れないので、スキルがあんまりありません。
ルビー さんが書きました:rsyncはディレクトリ間の同期コピーに本領を発揮するツールです。
Windowsではrobocopyに相当します。
本家はrsyncですが。
単体のファイルコピーに使うのは、割り箸を切るのに電動ノコギリ使うみたいなものでちょっとオーバースペックかな(^^;。
僕は、今回、テスト的に、ファイル単体でしかバックアップ取らなかったですが、そのうちディレクトリごと、バックアップ取ろうと思っていました。
ルビー さんが書きました:rsync -av --delete ソースディレクトリ ターゲットディレクトリ

これでディレクトリの同期コピー、いわゆるミラーリングのバックアップが取れます。
ソースの不要なファイルを削除すれば、ミラーリングなのでターゲットの不要ファイルも削除されます。
タイムスタンプの違うファイルだけがコピーされるので、容量が大きいディレクトリでも高速にバックアップできます。

私はパピーをFrugalインストールしたディレクトリごとバックアップしてます。
sfsファイルを入れたり消したりしても、ミラーリングなのでディレクトリの状態がそのままバックアップされます。
もしもの時はバックアップしたディレクトリごと書き戻せば、パピーの環境が復活します。
個人的なファイルは個人設定ファイルの外のディレクトリに置いているので、それも一緒にバックアップしてます。

使い方の注意はソースディレクトリの末尾に/を付ける、付けないで挙動が変わる事です。
/付けた方が自然な動作になると思います
ターゲットディレクトリの指定を間違えるととても悲惨な事になるので、十分に試してからの使用をお勧めします。
僕もFrugalインストールしたディレクトリごとバックアップしようと思います。
そうしないとrsyncを使っている意味がないですよね。
細かなアドバイスありがとうございます。
ルビー さんが書きました:
fukagorou さんが書きました:バックアップしたのを戻すには、こうかな。

rsync -av /mnt/z/pupsave.2fs /mnt/home/puppy431
パピーの動作中に個人設定ファイルを書き戻すのは、危険なのでやめた方がよいです。
挙動がおかしくなりませんでしたか?
動作中に可能なのは、個人設定ファイルのコピーだけだと思います。
挙動は、とりあえず大丈夫でしたが、危険なのですね。
これは、非常に重要なことですね。
危なかった。
良く教えてくださいました。
ありがとうございます!
バックアップを戻すのは、別の方法でやります。
PuppyLinuxを2つ、Frugalインストールしておいて、デュアルブートにして、片方が壊れたら、もう片方で戻すとか。
もしくは、PuppyLinuxをCDブートさせて、それで、戻すとか。
なんか、考えないといけないですね。

アドバイスありがとうございました。m(_ _)m
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:バックアップを戻すのは、別の方法でやります。
PuppyLinuxを2つ、Frugalインストールしておいて、デュアルブートにして、片方が壊れたら、もう片方で戻すとか。
私も個人設定ファイル書き戻す方法をどうしようか考えました。
始めはRAMモードで起動すればいいかと思ってましたが、ネット越しからバックアップを書き戻すのは固定IPなのでネットワーク接続の設定が面倒でした。
ROX-Filerは詳細表示にしないと気が済まないので、それも毎回面倒(^^;。

結局、パピーの引越しで古いバージョンは消してたのですが、個人設定ファイル書き戻し用に古いバージョンを残す事にしました。
パピーが二つあるのが、何かと便利かもです。
grubのmenu.lstの編集が必要ですが、要所を押さえればコピペで簡単に書き換えできます。
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

rsync本格的に使う

投稿記事 by fukagorou »

ルビー さんが書きました:パピーが二つあるのが、何かと便利かもです。
grubのmenu.lstの編集が必要ですが、要所を押さえればコピペで簡単に書き換えできます。
Puppy4.3.1JPを二つFrugalインストールしました。
menu.lstも修正し、デュアルブートするようにしました。

このコマンドでバックアップするようにしました。

rsync -av --delete /mnt/home/puppy431/ /mnt/z

戻す時は、もう一方のPuppy4.3.1JPを起動し、
このコマンドで戻すようにしました。

rsync -av --delete /mnt/z/ /mnt/sda1/puppy431

毎回このコマンドを入力するのは、面倒なため、シェルスクリプトに記述するようにしました。
今、色々バックアップのテストをしましたが、今のところ上手く行っています。
使い勝手が良いです。
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:毎回このコマンドを入力するのは、面倒なため、シェルスクリプトに記述するようにしました。
端末でコマンド叩くのはやっぱり面倒なので、私はアイコンポチッでやってます。
ただスクリプトファイルを単純にデスクトップに出して実行させても、スクリプト走ってるのが表には見えないので少々不安が残ります。
と言う事でこんな感じにしてます。

1. /root/my-applications/binに二つのスクリプトを作ります。名前は適当です。
  HogeBkup ←スクリプト起動用
  pupsavebkup.sh ←バックアップ用スクリプト

2. デスクトップにHogeBkupのアイコンを作ります。

各スクリプトの中身は、
HogeBkup

コード: 全て選択

#!/bin/sh
#端末起動 hogeバックアップ
rxvt -e pupsavebkup.sh
pupsavebkup.sh

コード: 全て選択

#!/bin/sh
#個人設定ファイルバックアップ

rsync -av --delete ソースディレクトリ ターゲットディレクトリ

echo
read -t 10 -p Done
echo
デスクトップでHogeBkupのアイコンクリックすると、端末の画面が現れてスクリプトが走ります。rsyncの動作も確認できます。
スクリプトが終わると、Doneの文字列が表示されます。
それから10秒後に端末の画面は閉じます。
Enterキー押しても閉じます。

最後のreadコマンドの部分は端末がスクリプト終了で即座に閉じない様にしてるだけなので、まあ無くても良いのですけど、この方が便利なので付けました。
実際には複数箇所のバックアップや、rsyncの出力を日付別のログファイルに取ったりしてるので、これ程シンプルではないですが書くと長くなるし、どうもfukagorouさんには仏教の教祖に説法みたいな感じがするのでこんな所です。

私は個人設定ファイルの書き戻しは単純にROX-Filerです。
書き戻しはたまにしかやらないので、その時にスクリプトの動作とか覚えてる自信が無くて。
使ってないスクリプトの中身はどんどん忘れる(^^;。
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

Re: Puppyいじりの記録

投稿記事 by fukagorou »

ルビーさんへ

スクリプトの指南ありがとうございます。
Linuxのスクリプトを書くのは、おととい(2016/05/27)が生まれて初めての経験でした。
なので、サンプルのスクリプト大変参考になります。
次回、時間がある時にそのスクリプト試してみたいと思います。
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:Linuxのスクリプトを書くのは、おととい(2016/05/27)が生まれて初めての経験でした。
そうだったのですか。
私もパピー使い始めてからですので、Linuxのシェルスクリプトはそれほど詳しくないです。
Windowsで移植されたsed使ってたので、多少の馴染みはありましたが。
でも私は本格的な言語は書けません(^^;。

パピーのシェルスクリプトで役に立ちそうな事。

・作成はROX-Filerで右クリック → 新規作成 → Script
  ファイル先頭にbashのシェルスクリプトの指定、#!/bin/shが付けられる。
  パーミッションの実行許可も自動で付く。
・作成場所は/root/my-applications/bin
  初期設定でファイルパスが通ってあるので、ここが便利。
・行頭に#はコメント行
  行の途中でも効くけど、作法的に行頭が良いみたい。
・拡張子は.sh

ファイル先頭の#!/bin/shは無くても動くけど、あった方が良さそう。
拡張子もあっても無くても良いけど、慣例的に.shみたいです。
スクリプトはコンパイルもいらないので手軽に試せるし、かゆい所に手が届くみたいな感じで便利だと思います。
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

バックアップのスクリプトOK

投稿記事 by fukagorou »

今、眠れないので、Puppyをいじっていました。
ディスクトップのスクリプトのアイコンをクリックするだけで、バックアップ取れるようになりました。
ルビー さんが書きました:1. /root/my-applications/binに二つのスクリプトを作ります。名前は適当です。
  HogeBkup ←スクリプト起動用
  pupsavebkup.sh ←バックアップ用スクリプト

2. デスクトップにHogeBkupのアイコンを作ります。各スクリプトの中身は、
HogeBkup

コード: 全て選択

#!/bin/sh
#端末起動 hogeバックアップ
rxvt -e pupsavebkup.sh
pupsavebkup.sh

コード: 全て選択

#!/bin/sh
#個人設定ファイルバックアップ

rsync -av --delete ソースディレクトリ ターゲットディレクトリ

echo
read -t 10 -p Done
echo
↑この方法で上手く行きました。
ルビー さんが書きました:パピーのシェルスクリプトで役に立ちそうな事。

・作成はROX-Filerで右クリック → 新規作成 → Script
  ファイル先頭にbashのシェルスクリプトの指定、#!/bin/shが付けられる。
  パーミッションの実行許可も自動で付く。
・作成場所は/root/my-applications/bin
  初期設定でファイルパスが通ってあるので、ここが便利。
・行頭に#はコメント行
  行の途中でも効くけど、作法的に行頭が良いみたい。
・拡張子は.sh

ファイル先頭の#!/bin/shは無くても動くけど、あった方が良さそう。
拡張子もあっても無くても良いけど、慣例的に.shみたいです。
↑この情報とても役に立ちました。ありがとうございます。

これで、バックアップが簡単に取れるようになりました。
だんだんと環境が整ってきました。
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

スクリプトの小ネタをもう一つ。
プログラムのソースやスクリプトを書く際に、キーのミスタッチなどで意図しない所を書き換えてないかとか、編集前と後で修正個所の確認をしたくなると思います。

私は二つのファイルの差分を比較するdiffを使っています。
バックアップしておいた編集前のファイルと編集後のファイルをdiffで比較すると、修正部分をGeanyで見やすく色分けして表示できます。

/root/my-applications/binに、"h"の名前でスクリプトファイルを作ります。

h

コード: 全て選択

#!/bin/sh
diff -u $1 $2 > /root/my-documents/list.diff
geany /root/my-documents/list.diff
ROX-Filerで確認したいファイルのあるディレクトリを開いて、Shift+@キーを押します。
`はバッククォート、グレーブアクセントとも呼ぶらしいですが分かりづらいキーです。
開いていたディレクトリがカレントの端末が開くので、次の様に入力します。
lsコマンドを叩いて、マウスの中ボタンでファイル名をコピペが簡単です。

h hoge.txt kame.txt

Geanyが開いて、こんな感じの表示になります。
diff.png
Geanyの初期設定では差分が赤と緑で色分けされます。
色は変えられますが、設定は少々ややこしいです。

"h"には特に意味はありません。
Windowsでは移植されたhdiffと言うのを使っているので、その頭文字の"h"です。慣れてしまっているので、パピーでも合わせて使ってます。
添付ファイルを見るにはパーミッションが必要です
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

ファイルコンペア

投稿記事 by fukagorou »

ルビーさんへ

僕が、プログラマーになって(社会人になって)初めての仕事で、あるプログラム(1000行ぐらいの)を作りました。
その仕事が終わってしばらくして、そのプログラムを再度いじる機会がありました。
その時、そのプログラムが納得がいかず、全く同じ動きをする、全く別のプログラムに置き換えてしまいました。
こっそり、上司などに内緒でやったのですが、ファイルコンペアをされてしまい、ばれてしまいました。
全く別物のプログラムになっていたので、上司は唖然としていました。
特に怒られなかったけど。
今となっては、良い思い出です。
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:その仕事が終わってしばらくして、そのプログラムを再度いじる機会がありました。
その時、そのプログラムが納得がいかず、全く同じ動きをする、全く別のプログラムに置き換えてしまいました。
それはプログラムが美しくなかったからでしょうか。
私はプログラマーではないですが、以前書いたスクリプト見直してみるとなんだか汚い(分かりづらい。動作に無駄がある)と思う時があります(^^;。
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

Re: Puppyいじりの記録

投稿記事 by fukagorou »

ルビー さんが書きました: それはプログラムが美しくなかったからでしょうか。
そうなんですよ。美しくなかったのです。
納期に追われて、慌てて作ったような覚えがあります。
なので、汚いプログラムになりました。
根本的に直しました。
ルビー さんが書きました:私はプログラマーではないですが、以前書いたスクリプト見直してみるとなんだか汚い(分かりづらい。動作に無駄がある)と思う時があります(^^;。
やっぱり、そういう時ありますよね。
でも、時間の関係で直せない時もありますよね。
fukagorou
HP=> http://fuka.moo.jp
アバター
タロ兵衛
記事: 876
登録日時: 08/07/08(火) 00:11
お住まい: よこはま
連絡する:

Re: Puppyいじりの記録

投稿記事 by タロ兵衛 »

fukagorou さんが書きました:やっぱり、そういう時ありますよね。
でも、時間の関係で直せない時もありますよね。
うううっ。今日もそんなプログラムを会社でメンテしてました。
どんなに時間が無くても・・・美しくなくていいから、キチンと書きましょうToT
構造体のメンバ、floatで記述すると、普通に通るけど、doubleにするとセグメンテーションフォルト。
何なんだこれは・・・・
(まぁ、定番の、ポインタの扱いのミスか構造体のsizeofの取り方なんだろうけど・・・何処だぁぁぁぁ)
neo実験君こと次期メインマシン
Intel Core i5-8400 2.80GHz
xenialpup64 7.5+lang_pack_ja-xenial64e
アバター
fukagorou
記事: 283
登録日時: 14/02/26(水) 22:34

Re: Puppyいじりの記録

投稿記事 by fukagorou »

タロ兵衛 さんが書きました:
fukagorou さんが書きました:やっぱり、そういう時ありますよね。
でも、時間の関係で直せない時もありますよね。
うううっ。今日もそんなプログラムを会社でメンテしてました。
どんなに時間が無くても・・・美しくなくていいから、キチンと書きましょうToT
構造体のメンバ、floatで記述すると、普通に通るけど、doubleにするとセグメンテーションフォルト。
何なんだこれは・・・・
(まぁ、定番の、ポインタの扱いのミスか構造体のsizeofの取り方なんだろうけど・・・何処だぁぁぁぁ)
ああ~、タロ兵衛さん、厳しい世界に生きておられますね。

他人の作ったプログラムのメンテは、高度なスキルが求められると思います。
僕は、たまに、メンテするより、関数ごと新規に作り直した方が速いのではないかと思える時もありました。

僕が世に送り出したプログラム群よ、どうか無事に動いていてください。
僕が作ったプログラムのメンテで苦労する人が出ませんように...。
僕は、プログラマーと言うかSEと言うか、辞めて14年以上経つので、もう僕の作ったプログラムの大半は、使われてないとは思うけど。
fukagorou
HP=> http://fuka.moo.jp
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: Puppyいじりの記録

投稿記事 by ルビー »

fukagorou さんが書きました:僕は、プログラマーと言うかSEと言うか、辞めて14年以上経つので、もう僕の作ったプログラムの大半は、使われてないとは思うけど。
物は壊れるけど、ソフトは不変で残り続ける。
まさか自分の作ったプログラムが二~三十年後まで使われる事はないだろう。
その結果起こったのが2000年問題の騒動だったし。
たぶん、fukagorouさんが作ったプログラムの大半もまだ動いてると思います(^^;。
返信する