ファイル同期のためのrsyncで使うオプション

2024/9/18 [23:46:22] (水) 天気

仕事で使っているchromebook2台でスクリプトファイル類を同期しておきたい。

そのためにメイン機から更新のあった(タイムスタンプが新しい)ものだけをコピーしたい。


てな時にlinuxだとrsyncが便利。

scpやsftpもあるけどscpもsftpもタイムスタンプを比較できないっぽいので、今回のような場合はrsync一択。

unix系ツールの例に漏れず、rsyncもオプションが豊富ですぐにわけわからなくなってるんで、自分の使う範囲のオプションをメモ。


rsync --include="*.pl" --include="*.pm" --exclude="*" -auv -e "ssh -p 10022" [ローカルディレクトリ] ユーザー名@192.168.0.NN:[リモートディレクトリ]

--incluce="*.pl"

--incluce="*.pm"

同期したい対象ファイルは拡張子が「pl」か「pm」

--exclude="*"

includeしたもの以外は同期対象外

↑これがわかりにくくて、includeとexcludeの順番がだいじ。

まず、対象を指定して、最後にそれ以外全部除外という命令になっている、らしい。


-a

以下全部をまとめて指定

・ディレクトリを再帰的に処理する

・シンボリックリンクをシンボリックリンクのままコピーする

・パーミッションを保持する

・タイムスタンプを保持する

・所有グループをそのまま保持する

・所有者をそのまま保持する(自分以外の所有者を保持するにはroot権限が必要)

・デバイスファイルや特殊ファイルを保持する(「--devices --specials」相当


-u

・更新のあったものだけをコピーする


-v

・転送状況を表示する


-e "ssh -p 10022"

・sshで接続する。ポート番号指定つき


わたしの場合は、以上で意図通りに同期される。実際にrsyncを走らせる前に

-n--dry-run

↑このふたつは、どちらもrsyncを走らせるけど、実際はコピーをしない。コマンドが意図したものになっているか確認するために使うオプション。


--delete

↑コピー元になくて、コピー先だけあるファイルを削除するオプション。deleteから始まるオプションはあぶないのでよっぽどのことがない限り使わない。


rsyncコマンドはコピー元、リモートのコピー先、両方に必要。

(リモートにインストールしてなくて、コマンドが見つかりませんとハマったのは内緒)


ローカルにあるディレクトリごと、USBメモリなんかに同期させるだけなら


from=/mnt/chromeos/removable/USBDrive/_works
to=/mnt/chromeos/removable/_TMP/_works
if [ -d $from ] && [ -d $to ]; then
   rsync -anu --delete --log-file=$to/rsync2usb-works.log $from/ $to/
fi

バックアップというより、持ち出して作業する一時的な扱いなので、こういうのは「--delete」をつけて、ローカルにないファイル・ディレクトリはUSBから削除してくれるので便利…でも、くれぐれも「delete」は要注意


[09/19 00:26:35]追記

ディレクトリ指定に注意が必要だった。

ローカルdir1/ リモートdir1

「/」がついてると、ローカルdir1に配置されているファイルがリモートdir1のファイルと同期される。

ローカルdir1 リモートdir1

「/」がついてないと、「リモートdir1/ローカルdir1」とローカルdir1がディレクトリごとリモートdir1の下にコピーされる。

[更新]2026-02-01 09:05:53

ImageMagickを使わずperlだけで画像サイズを取得

2015/9/18 [23:52:37] (金) 天気

ハイブリッド型EPUB3を生成するスクリプトのフィックスページ部分で画像サイズを取得する必要があった。

「かんたんEPUB3作成ハイブリッド型EPUB3対応版」http://t2aki.doncha.net/easy_epub-hybrid


定番のImageMagickを使えば簡単なんだけど、ImageMagickが簡単じゃなかった。


WINDOWSではImageMagickのインストールが必要で、さらにActivePerlをインストールしたら一緒にインストールされるppmを使ってImageMagickを使うためのperlのモジュールのインストールが必要。ユーザーさんに別途インストールしてもらうにはちょっとハードルが高い。


macはさらに致命的で、macport でインストールしても、パッケージがあったのでそれをインストールしても、ソースからコンパイルしても、肝腎のJPEG、PNGに対応したものを作れなかった(JPEGはどうにかこうにか、まずJPEGのライブラリをインストールしてmakeしなおしたらjpeg対応版ができたけど、PNGがお手上げ)

JPEGにもPNGにも対応したImageMagickを使ってるひとがいるようなので、わたしのスキル、知識不足。だけど、自分でうまく行ってないものをユーザーさんにインストールしてね、というのは無理すぎる。致命的。



「かんたん」を謳う以上、面倒くさいことはひとつでも増えちゃいけない。


てことで、扱うのはJPEGとPNGだけだし、perlだけで画像サイズを取得する方法を探してgoogleさま。


ありがたいことに、そのまま利用できるサブルーチンなどがいくつかアップされていた。

ただ、そのまま=ブラックボックスのまま使わせてもらうと、あとあとメンテの時などに困るのは火を見るより明らか。猿程度の理解は必要だろうと、画像について、その扱いについて調べたので、備忘録。



・PNGは簡単らしい。


16byte4byte4byte
widthheight

16byte目からの4byteに幅、続く4byteに高さのピクセル数が入っているので決め打ち。


seek(IMG, 16,0);
read(IMG, $buf, 8);
my($width, $height) = unpack("NN", $buf);

幅高さをネットワークバイトオーダーのビッグエンディアン(32bit)で取得するだけでOK。


・JPEGがちょっと面倒。


JPEGというのは複数のセグメントの塊

マーカー2Bytes
セグメントサイズ2Bytes
セグメント本体可変

画像情報を格納しているのはSOFという種類のセグメント。


マーカーというのは16進数の「FF」がセグメントの開始を表していて、これはどういうセグメントですよという内容を意味するのが「FF」に続く1Byteのバイナリ。

SOFセグメントのマーカーで、JPEGのベースラインは「FF」「C0」プログレッシブは「FF」「C2」ということらしい。


ファイルの先頭から見て「FF」が見つかったらそこからセグメントの開始となる(ファイル先頭と最後にはマーカーだけのセグメントがあるので、先頭の2Bytesは読み飛ばす)


必要なのはJPEGの情報が入ったSOFセグメント。


1)

4Bytes読み込む。

2)

unpackでマーカーとセグメントサイズを取得する。


3)

→マーカーの1byteがFFじゃなかったら終了。

→マーカーの1byteがFFでセグメント内容がC0かC2なら続くセグメント本体を読み込む。

→マーカーの1byteがFFでセグメント内容がC0でもC2でもなかったら、セグメントの本体サイズ分読み飛ばして次のマーカーからの4byteを読む


4)

画像サイズはセグメント本体先頭に入っている。

サンプルの精度画像縦サイズ画像横サイズ
1Byte2Byte2Byte

unpackで取得できる。


てことで、easy_epub-hybridに組みこんだサブルーチンが以下。


sub get_image_size{
    my $self = shift;
    my $args = shift;

    open(IMG, $args->{image}) || return;
    my $buf;
    my $w; my $h;
    binmode IMG;
    if($args->{image} =~ m!¥.png!){
        seek(IMG, 16,  0);
        read(IMG, $buf, 8);
        ($w, $h) = unpack("NN", $buf);
    }
    else{
        seek(IMG, 2, 0);
        while(1){
            read(IMG, $buf, 4);
            my($mark, $c, $len) = unpack("H2 H2 n", $buf);
            last if($mark ne ’ff’);

            if($c eq ’c0’ || $c eq ’c2’){
                read(IMG, $buf, 5);
                ($h, $w) = unpack("x nn", $buf);
                last;
            }
            else{
                seek(IMG, $len-2, 1);
            }
        }
    }
    close(IMG);
    return {width=>$w, height=>$h};
}

スクリプトの中からImageMagickを使うシチュエーションのほとんどが画像サイズの取得なので、これは重宝しそうだ。



jpeg画像について、おそらく間違ってるところがあると思うので、きちんとした知識は以下のサイトへどうぞ。


参考にさせていただいたサイト

http://tohoho-web.com/lng/200003/00030402.htm

http://www2c.biglobe.ne.jp/~osakana/vc/pc/jpegsize.html

http://hp.vector.co.jp/authors/VA032610/JPEGFormat/marker/SOF.htm

http://www.setsuki.com/hsp/ext/segment/sof0.htm

情報、丁寧な解説ありがとうございます。



そういえば。Ingress Lv.15になった。なんかAP稼ぎだけで今イチ面白みがなくなってきたなぁ。

image

[更新]2015-11-24 14:23:45

愚痴:思ったようには進まないものだ

2012/9/18 [15:45:23] (火) 天気

夏場(ってまだ終わってない)に動いた件が思うように進まず、夏バテもあってげんなり。

7月から始めて8月お盆にはひととおり納品した請負仕事の案件が、9月もこの時期になって、まだ先方作業中。いまデザイナー作業らしい。にしてもなあ、ひとのメールを読んでないのか、理解力読解力なのか、それとも文章力なのか。同じことを何度も聞かれると疲れる。事情・背景を説明しすぎて要点が伝わらなかったか、と思って、用件を箇条書きにしたら、全然怒ってもないのに気分を害したらすみませんと言われたので、また少し考え方・方向性の説明をつけたしてみたり。今さらメールの書き方で悩むとは思わなかった。

直接、対面でその度、べちゃくちゃしゃべって解決&決定した方が早いし確実だった。先方常駐ってワケではない請負仕事、メールでの意思疎通の問題かも知れないけど。決めたことを、後になって・原稿が終わってから先方都合で変更されると困る。え?それってOK出てからやってんのになんでそんなこと言い出す?メールにも書いてたよね?という心配が的中。事後承諾とお詫びのメールをしたんだけど、今後は難しい・厳しい。それに、3ヶ月引っ張られたんでは、他の予定も立たないし、割に合わない。


「小説同人誌Select」を制作するのに使っているソフト、SakuttoBookのバグもまいったなあ。最初、一作品だけしか収録してなくて、作品が追加されたら宣伝・告知もしようとやってたのに、その追加したバージョンからバグが混じって弱り目に祟り目踏んだり蹴ったり。購入したものがなくなってしまうなど致命的なことはないけど、本体の電源OFFもしくは再起動のたびに、アプリが異常終了するので、アプリ削除・再インストールが必要…って、ありえない。

この「小説同人誌Select」は、8月お盆に公開してから、まだ有料コンテンツの販売本数は自分購入分4本を除くと5本程度。でも、無料の本体はたいした露出もないのに週末で30〜40本@1日、平日10〜25本@1日のダウンロードはある。今、収録中の日野裕太郎さん以外の作家さんの追加予定があるので、その時点でバグフィックス、iOS6対応をチェックして、ふたたび、twitterなどで告知作戦をする。(すでに初稿で読ませてもらった追加予定の作品もオススメ。早くいろんなひとに読んでもらいたい)

このアプリが落ち着いて運用できるようになったら、今、進行中の作家さんのほかにも声かけ・募集を始めて(著者印税40%でお願いしてます)こっちを充実させたい。

こっちの開発元はレスポンスが早いので、今週中にはバグ対応を期待できる、かな。

image


[11/19 16:42:42] 追記。てことでいろいろやっておかないといけません。


アマゾンに並べた電子書籍のリスト

手前味噌だけど、ホラーや青春もの、癒しの物語などオススメできます。短編だと100円からあるので、気楽に読んでみてやってください。

こちらはiPhone電子書籍アプリ「小説同人誌Select」

https://itunes.apple.com/jp/app/id546230414?mt=8

小説同人誌Selectというこのアプリは無料で、中に有料の小説が収録されてます。無料サンプルもあるので、まずは立ち読み感覚でダウンロードして、気に入ったらその作品を購入してもらえるととてもうれしいです。

[更新]2026-02-02 08:23:04

apacheでネットワークドライブを見る

2009/9/18 [13:55:51] (金) 天気

ハマったんで、メモ。

今まではコマンドラインで整形加工してたので、Sambaでローカルに持ってくればよかった。けど、手順が煩雑だし、コマンドラインを使うのは抵抗のあるひともいるので、CGIにしてしまえ、と。


…ネットワークドライブにあるファイルが見えずに悶絶

あっさり、opendir() で死んでしまう。


apache windows ネットワークドライブ


でグーグルさま詣で。

どうやらユーザー権限が問題になっていて、「管理ツール」→「サービス」で、Apacheを実行しているユーザーを変更すればいい、とのこと。

さっそく、「サービス」→「ログオン」を見ると、デフォルトでは「ローカルシステムアカウント」がApacheを実行しているので、これを「アカウント」に変更(WINDOWSにログオンする自分のアカウントに変更)したら、opendir でネットワークドライブを覗くことができた。やれやれ。

[09/19 14:57:31]

ネットワークドライブには共有名でアクセスする。

opendir(DIR, ’//shared/’)


Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集

『Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集』

ケン・コ-ル

[更新]2026-02-04 09:17:40

モノクロフィルムもスキャン

2008/9/18 [08:53:14] (木) 天気

EPSON GT-F720。モノクロネガもスキャンし直し。カラーよりラクかもしれない。

48bitカラー、1200dpi、自動露出補正なし。といった基本設定は同じ。一コマずつの操作では、アンシャープマスクのチェックを外し(デフォルトでチェックがはいっていて、いちいち外すのが面倒)レベル補正(ヒストグラム)の両端を少しつめて、出力のトーンカーブをやっぱり少し整えるだけでOKだった、かも。tiffで吐き出される画像を読み込んで自動レベル補正一発のお手軽さ。カラーと違って妙な緑かぶりもないのでこれだけでイイ感じ(ちょっと青がかぶってるような気がするけど)

大人の科学付録のピンホールカメラで撮ったモノクロが柔らかくて面白い。プリントで見るともっと固くてシャープになっていてなんか違うなぁと。

たぶん、プリントの段階での焼きの加減(?)

とはいえ、一本(失敗して写ってないコマもあって)約18枚スキャンするのに40分以上かかるので、平日ヘロヘロ状態で帰ってからやるのはさすがに続かないゼ。


エロ本の編集をやってたころはカメラマンにいろいろ教えてもらったけどまるでなにも覚えてないのがいかにももったいない話だ。


って、朝っぱらから。架線トラブルだとかで、駅構内にひとがあふれ、電車が遅れております、というアナウンスが流れているだけ。雨でじめじめ蒸すし、バスで別路線に向かう途中。やれやれ。


[更新]2026-02-02 15:15:57

<<2026/09>>
  12345
6789101112
13141516171819
20212223242526
27282930

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: