- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2016.11.25 Friday
- ちょっとめんどくさい作業を..バッチを置いたフォルダのサブフォルダのtextを結合する。
-
ちょっとめんどくさい作業を..バッチを置いたフォルダのサブフォルダのtextを結合する。
1行ごとなのはファイルごとだと文字数制限で足りなくなるから
- | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 13:58 | comments(0) | - | pookmark |
- 2016.11.08 Tuesday
- batファイルのあるパスのフォルダのパスを作成 ペースト用フォルダを_autoを追加したパスを作成 親フォルダに行ってコピー ペースト
-
batファイルのあるパスのフォルダのパスを作成 ペースト用フォルダを_autoを追加したパスを作成 親フォルダに行ってコピー ペースト
動作確認:windows7
bat
Create path of folder with bat file path.
Create paste folder _auto added path.
Go to the parent folder and copy paste.
xcopysimple.bat batファイルのあるパスのフォルダの親フォルダに行ってコピー _autoを追加したフォルダにペースト
- | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 14:39 | comments(0) | - | pookmark |
- 2016.01.05 Tuesday
- Mac OSX 10.11.1 El Capitan で ssh_config を設定してパスワードなしsshログイン
-
Mac OSX 10.11 El Capitan で ssh_config を設定してパスワードなしsshログイン
http://joker.hatenablog.com/entry/2013/06/05/192336
- (Linuxサーバで操作)ひとまずパスワード認証の接続を許可する
- これをしておかないと、後で作成する公開鍵をサーバ側へ送れない。
- サーバ接続のために、ひとまずパスワード認証を許可しておく(
ここ
- を参考に
システム環境設定でリモートログインを許可すると
ssh whaison@10.15.21.70
他のPCでログインできますとなる。
サーバ接続には SSH 接続のみを許可し、パスワード認証は不許可にする。
/private/etc/ssh/sshd_config の
...(省略)
PasswordAuthentication no
...(省略)
ChallengeResponseAuthentication no
...(省略)
上記のように書きなおしたら、ssh を再起動する。
//cat .ssh/id_rsa.pub >> .ssh/authorized_keys //自分のマシンにはログインできないようだ。
クライアントのid_rsa.pub公開鍵を適当にダウンロードした場合
cat /Users/whaison/Downloads/id_rsa.pub >> .ssh/authorized_keys
で公開キーをサーバーマシンのauthorized_keysに登録する
んで確認
MAC0006:~ b07246$ ssh whaison@10.15.21.70Last login: Tue Jan 5 16:10:32 2016 from 10.15.21.70
noboru-no-MacBook-Pro:~ whaison$
できた! - | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 16:24 | comments(0) | - | pookmark |
- 2015.08.23 Sunday
- Jenkins で ssh パスワード聞かれながら ログインしてrsync するシェル 完成
-
MacOS10.10.2(Yosemite)どうしでJenkins で ssh パスワード聞かれながら ログインしてrsync するシェル 完成
でけた!
出力
コンソール出力
ユーザーanonymousが実行
ビルドします。 ワークスペース: /Users/whaison/AssetBundles
[AssetBundles] $ /bin/sh /Users/Shared/Jenkins/tmp/hudson283363095865289560.sh
spawn ssh whaison@192.168.179.5
Password:
Last login: Sun Aug 23 22:37:00 2015 from 192.168.179.7
whaisonMacBookAir-2:~ whaison$ rsync -avz --no-p --no-g --chmod=ugo=rwX --del
<on$ rsync -avz --no-p --no-g --chmod=ugo=rwX --dele te 'whaison@192.168.179.7
<-g --chmod=ugo=rwX --delete 'whaison@192.168.179.7: /Users/whaison/Assetbundl
<e 'whaison@192.168.179.7:/Users/whaison/Assetbundle s' '/Users/whaison/public
<Users/whaison/Assetbundles' '/Users/whaison/public/ '
receiving file list ... done
Assetbundles/
Assetbundles/.DS_Store
Assetbundles/headshot.png
Assetbundles/ssh_pass.sh
Assetbundles/ssh_rsync_whaison.sh
Assetbundles/test.sh
sent 190 bytes received 3956 bytes 8292.00 bytes/sec
total size is 337070 speedup is 81.30
whaisonMacBookAir-2:~ whaison$ flasher
-bash: flasher: command not found
whaisonMacBookAir-2:~ whaison$ Finished: SUCCESS
大成功!!!!
ちなみに。。。。。。。。。。。。。。。
expectとは?
http://www.uetyi.mydns.jp/wordpress/command/entry-158.html
ポイントは、sshのログイン時に秘密鍵を使ってログインするのですが、その秘密鍵のパスフレーズを入力するところと、ログイン後、コマンド「ls -l」を実行するところです。まずは、パッケージ「expect」をインストールし、次に実行用のシェルを作成します。
#!/usr/bin/expect
set timeout 5 spawnssh www.hoge.co.jp
expect "Enter passphrase for key"
send "hogehoge38¥n"
expect "Last login"
send "ls -l¥n" interact
使用するコマンドの説明です。
set timeout
設定した秒数の間、標準入力から応答がないとexpectは、終了します。上記例だと、5秒でタイムアウトする設定になります。「-1」を設定すると、タイムアウトしない設定になります。
spawn
自動で実行したいコマンドを指定します。上記の場合、「ssh www.hoge.co.jp」を実行します。
expect
指定された文字列(「”」に囲まれた文字)と標準入力のデータとを正規表現で比較し、一致するまで以降の命令を実行しません。例だと、「Enter passphrase for key」が、画面に表示されるのを待つことになります。
send
指定された文字列(「”」に囲まれた文字)を先に実行したコマンドのジョブに送信します。つまり、「hogehoge38¥n」とパスフレーズを入力したことになります。文字列最後の「¥n」は、改行(Enterを押下)を意味します。
interact
実行ジョブの標準入出力をキーボードと画面にします。これで、自動実行を終了し、端末からsshでログインしたのと同じ状態になります。
実行結果は、次のようになります。sshでログインした後、「ls -l」を実行し、制御を端末に戻しています。
userA@debian:~$ ./ssh_conect.sh spawn ssh www.hoge.co.jp Enter passphrase for key '/home/userA/.ssh/id_rsa': Last login: Mon May 26 18:51:27 2008 from localhost userB@kurobox:~$ ls -l totle 1600 drwxr-xr-x 2 userB userB 4096 2008-03-24 17:55 TEMP -rw-r--r-- 1 userB userB 681 2008-03-21 17:01 apache.der -rw-r--r-- 1 userB userB 679 2008-03-21 16:48 Test.txt drwxr-xr-x 2 userB userB 4096 2004-05-02 13:25 lost+found userB@kuroboxfo:~$
- | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 23:44 | comments(0) | - | pookmark |
- 2015.08.23 Sunday
- sshログインできたらもうrsyncでパスワード入力もとめられない
-
先にmampが
使っていたので。
Jenkins おじさんは
パッケージでインストールした。
ここはjenkins SSH -pluginがやってくれるので
noboru-no-MacBook-Pro:~ whaison$ ssh whaison@192.168.179.5
Password:
sshログインできたらもうrsyncでパスワード入力もとめられない。whaison@192.168.179.7は自分のPC側
rsync -avz --no-p --no-g --chmod=ugo=rwX --delete 'whaison@192.168.179.7:/Users/whaison/Assetbundles' '/Users/whaison/public/'
receiving file list ... done
deleting Assetbundles/jenkins-1.624.pkg
deleting Assetbundles/MAMP_MAMP_PRO_3.4.pkg
deleting Assetbundles/Android/whaison.tumblr.com_02MacbookAir.jpg
deleting Assetbundles/Android/dir1/dir2/.DS_Store
Assetbundles/
Assetbundles/.DS_Store
Assetbundles/Android/
Assetbundles/Android/.DS_Store
Assetbundles/Android/whaison.tumblr.com_024.jpg
Assetbundles/Android/dir1/
Assetbundles/Android/dir1/.DS_Store
Assetbundles/Android/dir1/dir2/
Assetbundles/ssh/
Assetbundles/ssh/.DS_Store
Assetbundles/ssh/id_rsa.pub
sent 350 bytes received 96773 bytes 64748.67 bytes/sec
total size is 333274 speedup is 3.43
whaisonMacBookAir-2:~ whaison$
おっけー完璧
rsync -avz --no-p --no-g --chmod=ugo=rwX --delete 'whaison@192.168.179.7:/Users/whaison/Assetbundles' '/Users/whaison/public/'
これをSSH-Pluginにやらせまつ
SSH-Pluginつかえまてん。
- | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 20:52 | comments(0) | - | pookmark |
- 2015.08.23 Sunday
- MacBookAir MacOS10.10.2 Yosemite rsync でrsync: mkdir "/backups" failed: Permission denied (13)の解決方法
-
MacBookAir MacOS10.10.2 Yosemite rsync でrsync: mkdir "/backups" failed: Permission denied (13)の解決方法
解決方法
やっぱ外人さんすごい ペッツさんのブログhttp://blog.pezcuckow.com/post/28763933464/rsync-permission-denied-13
より
こんなエラーを目にしましたか?rsync: mkdir “/home/” failed:
mkdir“/home/"
Permission denied (13)
否定された許可(13)Skipping any contents from this failed directory ***
これからどんなコンテンツもスキップすると、ディレクトリ*は失敗されました**
こんなコマンドオプションを追加してください。--no-p disables permissions copying
--どんなpも許容コピーを無能にしません。
--no-g disables group copying and
--どんなgもグループコピーを無能にしないそして
--chmod=ugo=rwX ensures that all non-masked bits get enabled
--chmod=ugo=rwXは、すべての非仮面のビットが可能にされるのを確実にします。
で実際のところやってみた。
例
rsync -av --no-p --no-g --chmod=ugo=rwX --delete /backup/ user@mywebsite:~/folder/
MacBookAir から MacBookProの共有リモートログイン許可してssh whaison@192.168.179.7 で入れる場合。
MacOSXのSSH認証は
チャレンジレスポンス認証になるらしく、普通のプレインテキストによる認証ではないっぽい。なので、/etc/sshd_config を編集して通常のログイン方法に変更しておく。
$ sudo vi /etc/sshd_config 変更前:#PasswordAuthentication no 変更後:PasswordAuthentication yes
実例
rsync -avz --no-p --no-g --chmod=ugo=rwX --delete '/Users/whaison/Assetbundles' 'whaison@192.168.179.7:~/public/'
注意点
1、フォルダに大文字とかスペースとか使ってる場合 コピー元も コピー先もシングルコートでかこまないと rsyc がターミナルに渡せないので ダメ
2、コピー元のフォルダの後ろの/があるとフォルダほっていかないからナシ。
3、Mac間の場合 "ssh " のオプションとかいれなくておっけwhaisonMacBookAir-2:~ whaison$ rsync -avz --no-p --no-g --chmod=ugo=rwX --delete '/Users/whaison/Assetbundles' 'whaison@192.168.179.7:~/public/'
Password:
building file list ... done
Assetbundles/.DS_Store
Assetbundles/Android/
Assetbundles/Android/.DS_Store
Assetbundles/Android/whaison.tumblr.com_01 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?.jpg
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/.DS_Store
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/.DS_Store
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/
Assetbundles/Android/dir1 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/whaison.tumblr.com_01.jpg
Assetbundles/Android/dir2 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/
Assetbundles/Android/dir2 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/.DS_Store
Assetbundles/Android/dir2 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/
Assetbundles/Android/dir2 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/
Assetbundles/Android/dir2 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/whaison.tumblr.com_01.jpg
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/.DS_Store
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/.DS_Store
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/
Assetbundles/Android/dir3 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/whaison.tumblr.com_01.jpg
Assetbundles/Android/dir4 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/
Assetbundles/Android/dir4 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/.DS_Store
Assetbundles/Android/dir4 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/
Assetbundles/Android/dir4 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/
Assetbundles/Android/dir4 ?¥#201??¥#202??¥#203¥#222?¥#202¥#232?¥#203?/dir2/dir3/whaison.tumblr.com_01.jpg
sent 478772 bytes received 492 bytes 56384.00 bytes/sec
total size is 1115670 speedup is 2.33
whaisonMacBookAir-2:~ whaison$
完璧っす! - | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 05:37 | comments(0) | - | pookmark |
- 2015.08.23 Sunday
- rsync メモ3
-
http://www.omnioo.com/record/ubuntudebian/rsync-option-ssh/
rsyncの使い方(オプション SSH)
SSHが繋がっているのだったら、rsync使わないとかなりもったいないです。rsyncは差分同期をとってくれるので、手動でコマンド叩くよりはやっぱりcronがいいです。完全な同期とかCMSのミラーリングとかにはちょっと欠かせないです。何はともあれ使っていないといろいろ忘れてしまうので備忘録。
基本的な使い方
rsync -a /from /to
ディレクトリを丸ごとコピーする際には、rsync -a [同期元] [同期先]でいいわけなんですが、基本的な使い方においてすでに奥が深いです。
rsync -a /from /to
の場合は、/to/fromという風にディレクトリが丸ごと/to/以下にコピーされます。しかし、
rsync -a /from/ /to
の場合は、/fromディレクトリの中身がそのまま/toディレクトリ以下に展開されます。fromディレクトリそのものはコピーされません。つまり、ディレクトリ以下を再帰的にコピーするというわけです。ここが基本的な使い方としてご注意。
rsync -a /from/ /to/
しかし、いろいろ複雑ですが、ディレクトリ以下を丸々同期かけるという設定だったら最後にスラッシュをつけた方が安全安心設定です。要は終端にスラッシュを付けておけばディレクトリ同士の同期をやってくれるというわけです。また、下記にある除外ファイルの設定がわかるとさらに楽になります。削除したファイルも同期する
rsync -a --delete /from /to
–deleteオプションを使います。同期元で削除したファイルは同期先(コピー先)でも削除されます。ファイルが肥大化しなくていいです。同期というのだからたいていの場合は–deleteをつけて実行します。同期する際に除外するファイルを指定する
例えばwordpressなんかですと、wp_config.phpとか、.htaccssはDBやサーバーパスの情報が入っているのでそのままコピーするとコピー先のサーバーではうごかなくなってしまいます。通常のファイルバックアップだったらそのままコピー保存で問題ありませんが、動的なファイルをそのまま同期すると設定ファイル類も上書きされて困ってしまいます。そういう場合は、同期の際に除外するファイルを指定します。
rsync -a --delete --exclude '.gvfs' /from /to
とこんな感じになります。同期先に指定したファイルは転送されません。
ここでちょっと注意なのは、除外ファイルはフルパスなどで設定する必要がないことです。/fromという同期元のパスが指定されているので、そのパスを基軸にして–exclude ‘PAHT’ということになります。これはなかなか便利だけど、時折迷います。
この–excludeオプションは正規表現も使えます。ドットファイルなどを同期したくない場合はまとめて正規表現で指定します。
rsync -a --delete --exclude ".*" /from /to
複数の全く別のファイルを除外する場合は、そのまま複数指定します。
rsync -a --delete --exclude "aaa.pl" --exclude "bbb.pl" --exclude "ccc.pl" /from /to
あまりにも除外ファイルがたくさんある場合は、除外ファイルリストを作成してそれを読みこませるということができます。
--exclude-from=ignore_list
ignore_listというファイルを作成して、同期元のディレクトリからの相対パスで、
.htaccessやその他の同期してほしくないファイルを改行で羅列してゆけばOKです。そういえば、ですが、–excludeを指定するファイルのパスはフルパスとか駄目です。あくまでもrsyncで設定した同期元のディレクトリを中心にそこからの相対パスで書きます。実行結果(実行内容)を詳細に表示させる
cronなんかで実行させるのだったらあんまり必要ないですが、端末でコマンド直叩きする場合だったら、その実行内容(同期をとったファイル(差異のあったファイル))のリストを一応見ておきたいものです。その時は、-vオプションを追加します。
rsync -av --delete /from /to
こんな感じです。やたらと重いファイルは圧縮して送る
私もむかしはSCPコマンドでtarしたファイルを転送していました。SCPしてtarして結構面倒なのです。rsyncだったら圧縮して送信してその先で展開してくれるので便利。内部的な動作なので我々の目には見えませんが。重いファイルは圧縮して転送するのがよいです。-zオプションを使います。
rsync -avz --delete /from /to
SSHでリモート転送する
rsyncの醍醐味はやはりリモート転送なので、これは是非お試しください。バックアップを取るならリモートホスト感じゃないと本当は意味でないですし。SSHは非常に便利ですが、端末でコマンド直叩きの場合は通常のSSH接続で構わないですが、cronなどで実行する際にはパスワードなしの認証鍵を作らないとダメです。ここらの細かいSSHの解説は割愛しますが、全然わからないという人はSSHができるようになってからでので、sshの基本を学びましょう。
SSHを使う際には-eオプションを使います。
rsync -avz --delete -e "ssh username@example.com" /from /to
SSHの接続では手動でrsyncを使う場合は、パスワードがある秘密鍵を使うのでよいのだけど、たいていの場合はcronなどで自動的にバックアップをとっておくという仕組みを考えるわけでして、結局のところ-iオプションでパスワードなしの秘密鍵を指定するというのが大体のところなのではないかと。ポートの指定、秘密鍵の指定、SSHのバージョンと様々な細かい設定が必要な場合は以下のような感じになります。
rsync -avz --delete -e "ssh -i /home/user/.ssh/id_rsa" /from user@example.com:/to
ポートの設定とか鍵のパスとかSSHのバージョンとか暗号方式とかSSHのオプションはそのまま設定します。rsyncのオプション一覧
さてrsyncのオプションですが、これが実に様々なものがあります。rsyncでは-aを多用しますが、この-aはたいてい使われるオプションセットをまとめて設定するものです。以下よく使うオプションの一覧です。-v バックアップ中にコピーしているファイル名を表示する -r 指定したディレクトリ以下を再帰的にコピーする -l シンボリックリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる -H ハードリンクはそのままコピーする。指定しないとリンク先の実体がコピーされる -p パーミッション属性をたもったままコピーする -o 所有者属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる -g グループ属性をたもったままコピーする。指定しないと属性はコピーしたユーザーのものになる -t タイムスタンプをたもったままコピーする -D デバイスファイルをたもったままコピーする -z データを圧縮して転送する -u 追加されたファイルだけをコピーする -a 上記のオプションで「rlptgoD」を同時に指定する –existing 更新されたファイルだけをコピーし、追加されたファイルは無視する –delete コピー元で削除されたファイルは、コピー先でも削除する。-aオプションと同時に指定するとコピー元とコピー先を同期できる –exclude ‘**’ **に一致するファイルはコピーしない。「*.bak」「*~」など特定のファイルを除外したいときに使う
この除外ファイルのパス指定は、rsyncの大元のディレクトリからの相対パスになります。–stats コピーの結果を表示する。指定しないといっさいのメッセージは表示されない –chmod rsync先の権限を変更するオプションを追加 –chmod=u+rwx -e ssh 暗号化してファイルを転送する。コピー先としてネットワークでつながった別のホストを指定するときに使う
rsync -avz --chmod=u+rwx --delete --exclude="wp-config.php" --exclude=".*" -e "ssh -i /home/user1/.ssh/id_rsa" /home/user/www/copy_dir user2@example.com:/home/user2/copyed_dir
長くてびっくりですが仕方ないです。これは、- まず-aでもって、再帰的にコピー、シンボリックリンクも同様にコピー、パーミッションを保ったままコピー、タイムスタンプも保持してコピー、グループを保持してコピー、オーナー権限も保持してコピー、デバイスファイルを保持してコピーということになります。
- -vは実行中にそれぞれの作業を表示してくれるオプション。
- それから、-zで転送データを圧縮して送るというオプション。これでだいたいのところは大丈夫です。バッチ処理的に行う場合は-vは必要ないかもです。
- それから、パーミッションの問題が出てきたら–chmod=u+rwxでもってすべての権限を持たせてあげるのがいいです。
- で、コピーしなくてもいいファイルが(上記の場合はWordpressの設定ファイルだけど)設定ファイル類、configファイル類だと思うので排除。また.htaccessとかの隠しファイル類もたいていの場合ホストごとに別の用途があると思われるので排除。
- 最後にSSH接続の設定を-eオプションで行うわけですが、この際、パスワードなしの秘密鍵認証を行います。予めパスフレーズなしの秘密鍵を生成してセットしておく必要があります。ここらはSSHの設定で個別にやっておく。
- コピー元とコピー先のディレクトリ指定が間違っていないかどうか確認して終わり。
rsyncの諸々豆知識的注意点
- –exclude=”xxxxx.php”とかやって同期除外設定をすると、再帰的にxxxxx.phpと同名のファイルが同期されなかったのでちょっとびっくりです。同期元・同期先のディレクトリをトップとして相対的にパスを指定するのかと思ったけど、全然そうじゃないです。こちら外部ファイルとして同期除外ファイルを設定できるので、できればそっちを使った方がいいですね。
- reverse mapping checking getaddrinfo for [HOSTNAME] failed – POSSIBLE BREAK-IN ATTEMPT!というエラーみたいなものが出ることがあります。これは「接続元」のサーバーに正しいホスト名が設定されていないことが原因なので、/etc/hostsに[HOSTNAME]を加えてください。
- 送信先のサーバーにrsyncがインストールされていないとリモートホストでは使えません。もし送信先にインストールされていない場合は「bash: rsync: コマンドが見つかりません」というエラーが出ます。
rsyncで差分ファイルのリスト化をする(差分ファイルの確認)
差分をとってその差分ファイルをリスト化するだけ(同期しない)というのもできます。実際にコピーしないので確認作業にはとてもよいです。
rsync --checksum -nav -e ssh /home/user/data/ user@example.com:/home/user/data > diff.txt
みたいな感じです。オプションの-nをつけるのがポイントです。これ忘れると上書きされるのでご注意。ここでもパスの指定での最後のスラッシュに気をつけましょう。 - | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 00:29 | comments(0) | - | pookmark |
- 2015.08.22 Saturday
- rsync メモ2
-
$ rsync -av ~/dir1 /media/disk/backup/
ディレクトリも含めてコピーしたい場合:「/」なし
$ rsync -av ~/dir1/ /media/disk/backup/
そのディレクトリ以下のツリーをコピーしたい場合:「/」あり - | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 17:51 | comments(0) | - | pookmark |
- 2015.08.22 Saturday
- MacOSX10.10.4 Yosemiteでsshで rsync ってどうすればどう同期なんのか?
-
noboru-no-MacBook-Pro:~ whaison$ rsyncrsync version 2.6.9 protocol version 29
Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and others.
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
inplace, IPv6, 64-bit system inums, 64-bit internal inums
rsync comes with ABSOLUTELY NO WARRANTY. これは、フリーソフトウェア, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.
rsyncは効率的なリモートアップデートができるファイル転送プログラムです。使い方:
Usage: rsync [OPTION]... SRC [SRC]... DESTor rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.
Options
-v, --verbose increase verbosity コピーしているファイル名やバイト数などの情報を表示します。 -q, --quiet suppress non-error messages
--no-motd suppress daemon-mode MOTD (see manpage caveat)
-c, --checksum skip based on checksum, not mod-time & size
-a, --archive archive mode; same as -rlptgoD (no -H) コピー元のディレクトリを再帰的にオーナー・グループ・パーミッション・タイムスタンプをそのままコピーします。オプション -rlptgoD と同じです。 --no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories ディレクトリ内を再帰的にコピーします。 -R, --relative use relative path names
--no-implied-dirs don't send implied dirs with --relative
-b, --backup make backups (see --suffix & --backup-dir)
--backup-dir=DIR make backups into hierarchy based in DIR
--suffix=SUFFIX set backup suffix (default ~ w/o --backup-dir)
-u, --update skip files that are newer on the receiver コピー元とコピー先を比較し、追加・更新されたファイル・ディレクトリのみをコピーします。 --inplace update destination files in-place (SEE MAN PAGE)
--append append data onto shorter files
-d, --dirs transfer directories without recursing
-l, --links copy symlinks as symlinks シンボリックリンクをそのまま(ターゲットの指定を変えずに)コピーします。 -L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the source tree
-k, --copy-dirlinks transform symlink to a dir into referent dir
-K, --keep-dirlinks treat symlinked dir on receiver as dir
-H, --hard-links preserve hard links
-p, --perms preserve permissions パーミッションをそのままコピーします。 --executability preserve the file's executability
--chmod=CHMOD affect file and/or directory permissions
-o, --owner preserve owner (super-user only) オーナーをそのままコピーします。 -g, --group preserve group グループをそのままコピーします。 --devices preserve device files (super-user only)
--specials preserve special files
-D same as --devices --specials
-t, --times preserve times タイムスタンプをそのままコピーします。 -O, --omit-dir-times omit directories when preserving times
--super receiver attempts super-user activities
-S, --sparse handle sparse files efficiently
-n, --dry-run show what would have been transferred
-W, --whole-file copy files whole (without rsync algorithm)
-x, --one-file-system don't cross filesystem boundaries
-B, --block-size=SIZE force a fixed checksum block-size
-e, --rsh=COMMAND specify the remote shell to use
--rsync-path=PROGRAM specify the rsync to run on the remote machine
--existing skip creating new files on receiver
--ignore-existing skip updating files that already exist on receiver
--remove-source-files sender removes synchronized files (non-dirs)
--del an alias for --delete-during
--delete delete extraneous files from destination dirs コピー元にない(削除された)ファイルをコピー先で削除します。コピー元とコピー先を同期します。 --delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during transfer, not before
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from destination dirs
--ignore-errors delete even if there are I/O errors
--force force deletion of directories even if not empty
--max-delete=NUM don't delete more than NUM files
--max-size=SIZE don't transfer any file larger than SIZE
--min-size=SIZE don't transfer any file smaller than SIZE
--partial keep partially transferred files
--partial-dir=DIR put a partially transferred file into DIR
--delay-updates put all updated files into place at transfer's end
-m, --prune-empty-dirs prune empty directory chains from the file-list
--numeric-ids don't map uid/gid values by user/group name
--timeout=TIME set I/O timeout in seconds
-I, --ignore-times don't skip files that match in size and mod-time
--size-only skip files that match in size
--modify-window=NUM compare mod-times with reduced accuracy
-T, --temp-dir=DIR create temporary files in directory DIR
-y, --fuzzy find similar file for basis if no dest file
--compare-dest=DIR also compare destination files relative to DIR
--copy-dest=DIR ... and include copies of unchanged files
--link-dest=DIR hardlink to files in DIR when unchanged
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level通信を圧縮します。 -C, --cvs-exclude auto-ignore files the same way CVS does
-f, --filter=RULE add a file-filtering RULE
-F same as --filter='dir-merge /.rsync-filter'
repeated: --filter='- .rsync-filter'
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
--include=PATTERN don't exclude files matching PATTERN
--include-from=FILE read include patterns from FILE
--files-from=FILE read list of source-file names from FILE
-0, --from0 all *-from/filter files are delimited by 0s
--address=ADDRESS bind address for outgoing socket to daemon
--port=PORT specify double-colon alternate port number
--sockopts=OPTIONS specify custom TCP options
--blocking-io use blocking I/O for the remote shell
--stats give some file-transfer stats
-8, --8-bit-output leave high-bit chars unescaped in output
-h, --human-readable output numbers in a human-readable format
--progress show progress during transfer
-P same as --partial --progress
-i, --itemize-changes output a change-summary for all updates
--out-format=FORMAT output updates using the specified FORMAT
--log-file=FILE log what we're doing to the specified FILE
--log-file-format=FMT log updates using the specified FMT
--password-file=FILE read password from FILE
--list-only list the files instead of copying them
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
--write-batch=FILE write a batched update to FILE
--only-write-batch=FILE like --write-batch but w/o updating destination
--read-batch=FILE read a batched update from FILE
--protocol=NUM force an older protocol version to be used
-E, --extended-attributes copy extended attributes
--cache disable fcntl(F_NOCACHE)
-4, --ipv4 prefer IPv4 IPv4を使用します。 -6, --ipv6 prefer IPv6
--version print version number
IPv6を使用します。 (-h) --help show this help (-h works with no other options)
Use "rsync --daemon --help" to see the daemon-mode command-line options.
Please see the rsync(1) and rsyncd.conf(5) man pages for full documentation.
See http://rsync.samba.org/ for updates, bug reports, and answers
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1318) [client=2.6.9]
noboru-no-MacBook-Pro:~ whaison$rsync -av dir1/ backup/
この状態で
noboru-no-MacBook-Pro:~ whaison$ rsync -av dir1/ backup/
building file list ... done
./
whaison/
whaison/jugem/
whaison/jugem/jp/
whaison/jugem/jp/mM1.jpg
sent 94696 bytes received 66 bytes 189524.00 bytes/sec
total size is 94473 speedup is 1.00
noboru-no-MacBook-Pro:~ whaison$
こうなる。
こーんなかんじで突っ込んで
追加分のみコピーする場合
rsync -auv dir1/ backup/
noboru-no-MacBook-Pro:~ whaison$ rsync -auv dir1/ backup/
building file list ... done
./
.DS_Store
whaison/
whaison/jugem/
whaison/jugem/jp/
whaison/jugem/jp/?¥#202??¥#202??¥#203??¥#203??¥#203??¥#202??¥#203??¥#203¥#203?¥#203¥#210 2015-08-22 0.54.36.png
whaison/jugem/jp/?¥#202??¥#202??¥#203??¥#203??¥#203??¥#202??¥#203??¥#203¥#203?¥#203¥#210 2015-08-22 0.54.50.png
sent 76921 bytes received 110 bytes 154062.00 bytes/sec
total size is 185258 speedup is 2.40
noboru-no-MacBook-Pro:~ whaison$
追加された。
リモートのテストしてみましょう
sshでログイン
MacOSX10.10.4 Yosemiteでは簡単にsshサーバーを立てられる様になっていて、
システム環境設定
>共有
で
>リモートログイン
を有効にするだけで sshで外から入れる様になります 1。この設定画面にIPアドレス(またはホスト名)も書かれてるので 書かれてる通りにsshコマンドを打てば外部から入れます。
noboru-no-MacBook-Pro:~ whaison$ ssh whaison@172.20.10.6
The authenticity of host '172.20.10.6 (172.20.10.6)' can't be established.
RSA key fingerprint is 8d:f9:86:c4:17:f8:77:b5:d9:97:0f:eb:d6:c2:dd:e0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.20.10.6' (RSA) to the list of known hosts.
Password:
Last login: Sat Aug 22 00:29:51 2015
noboru-no-MacBook-Pro:~ whaison$ ssh whaison@172.20.10.6
Password:
Last login: Sat Aug 22 02:09:46 2015 from 172.20.10.6
MacOSXのSSH認証はチャレンジレスポンス認証になるらしく、普通のプレインテキストによる認証ではないっぽい。なので、/etc/sshd_config を編集して通常のログイン方法に変更しておく。
$ sudo vi /etc/sshd_config 変更前:#PasswordAuthentication no 変更後:PasswordAuthentication yes
わり種としては–chmodなんていうのもある。コピー先(同期先)でのパーミションの調整ができるというものです。rsync Permission deniedになった時には有効です。オプションなどをいっぱいくっつけた実用的なコマンドというのは以下のようになるかもしれません。
rsync -avz --chmod=u+rwx --delete --exclude="wp-config.php" --exclude=".*" -e "ssh -i /home/user1/.ssh/id_rsa" /home/user/www/copy_dir user2@example.com:/home/user2/copyed_dir
らしい
rsync -av --chmod=u+rwx -e ssh dir1 whaison@192.168.179.7:/backups/dir5
rsync -avz --chmod=u+rwx -e "ssh -i /Users/whaison/.ssh/id_rsa" dir1 172.20.10.6:/dir5rsync -a -e "ssh" --rsync-path="sudo rsync" /source/path /destination/path
rsync -a -e "ssh -i /Users/whaison/.ssh/id_rsa" --rsync-path="sudo rsync" /dir1 172.20.10.6:/dir5
ローカルのディレクトリをリモートマシンにコピー
ローカル環境のディレクトリをリモートマシン先(IPアドレス:172.20.10.6)にコピーします。最もよく使う例ですね。-z オプションを利用して通信を圧縮しています。$ rsync -auvz dir1/ whaison@172.20.10.6:/ssh_test/whaison/ whaison@192.168.001.002's password: ← 指定したユーザー名(whaison)に対するSSHのパスワード認証です。 sending incremental file list … sent 617454230 bytes received 266 bytes 11329440.29 bytes/sec total size is 640680152 speedup is 1.04
通信には暗号化されたSSHプロトコルが利用されます。
ローカルのディレクトリとリモートマシンと同期
ローカルのディレクトリとリモートマシンのディレクトリを同期する場合は、--delete オプションを利用します。こうすることでローカルとリモートマシンのディレクトリを全く同じものにしてくれます(同期してくれます)。
$ rsync -avz --delete dir1/ whaison@172.20.10.6:/home/whaison/ sending incremental file list deleting tmp.txt … sent 290 bytes received 13 bytes 121.20 bytes/sec total size is 640680044 speedup is 2114455.59
※ただし、ローカルに存在しないファイルがリモートマシン上にある場合は、そのファイルは削除されるので注意が必要です。ディスク容量に余裕がある場合、--delete オプションは利用しないほうがいいでしょう。
SSHのオプションを指定して、ローカルのディレクトリをリモートマシンにコピー
sshのオプションを指定する場合は、-e オプションを利用します。
SSHのセキュリティ強化のため通信のポート番号を変更している場合、ポート番号を明示してrsyncコマンドを実行します。以下は、ポート番号を56789に設定している例です。
$ rsync -auvz -e 'ssh -p 56789' dir1/ whaison@172.20.10.6:/home/whaison/ sending incremental file list … sent 639 bytes received 213578 bytes 10449.61 bytes/sec total size is 1105199212 speedup is 5159.25
これでOKです。「sshコマンド」の部分はシングルクォーテーションではさみましょう。sshコマンドの他のオプションもこの方法で指定します。
参考サイト
http://webkaru.net/linux/rsync-command/ - | whaison | shell,batch,cmd,WindowsScriptHost,Jscript,vbs | 00:34 | comments(0) | - | pookmark |