お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-09-02 11:03:27

Snufkin
メンバ
登録日: 2007-08-27

cpのスイッチ

<請御教示>
cpコマンドに付ける「サブディレクトリまでコピー」「タイムスタンプ比較で新しいものだけ」「上書き確認不要」を意味するスイッチはありますか。

<要するにやりたいこと>
達人の皆さん こんにちは 御蔭様でubuntu歴2週間目の週末を楽しんでいますSnufkinです。
もうWindowsでできてまだubuntuでできない事は数えるほどしか残っていませんが、その一つがデータの自動バックアップです。
Windowsでは外付けハードディスクを使い下のようなバッチファイルを起動しています。
XCOPY D:\abc\*.*  G:\abc\ /S /D /Y
バックアップ元がD:\abc 先がG:\abc、スイッチ/Sはサブディレクトリまでコピー、/Dが一番の肝ですが、タイムスタンプを比較してより新しいものだけをコピー、/Yは上書きするときの確認不要、をそれぞれ指定しています。
このバッチファイルを個人機では適当に手動起動、仕事機はタスクで時間起動しています。
このあたりの詳しい話にもし御関心を頂けるならこちらをご参照のほど。
http://homepage2.nifty.com/snufkin/bkup.html

で、これをubuntu側でもやりたくなったというわけです。
外付けHDはNTFSからFAT32に初期化し直して、Windows/ubuntu両方から読み書きできるようにしました。
後はこのバッチファイルをUNIXシェルとして書き直せば良いのは解かるし、XCOPYに相当するのがcpだということまでは辿り着いたのですが、その先が解かりません。
[ls]の後ろに[-l]を付けると詳細な情報が表示されるのと同じようなスイッチがcpにもあるだろうと思うのですが、調べ方が解かりません。
Windowsのコマンド画面から[/? XCOPY]でスイッチを含めた解説がずらずらと流れるような、そういう調べ方は無いものでしょうか。
或はUNIXの世界ではそもそも「スイッチ」とは呼ばないのでしょうか。

オフライン

 

#2 2007-09-02 11:32:21

yama
メンバ
登録日: 2006-10-23

Re: cpのスイッチ

コマンドのオプションの情報を知りたいときは、
  cp -h または、 cp --hlep
ですね。

詳細な情報を知りたいのならば、
   man cp
とすることでマニュアルページが表示されます。
マニュアルページが日本語でないときは、日本語のマニュアルページがインストールされていないので、

コード:

sudo apt-get install manpages-ja

として入れちゃいましょう。
また、二つのディレクトリの同期を取ってくれる rsync というソフトもバックアップによく用いられているようです。
多分お望みの動作は rsync を使うのがいいかもしれません。もちろん cp でも問題ないと思いますが。

最後の編集者: yama (2007-09-02 11:35:09)

オフライン

 

#3 2007-09-02 11:46:41

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: cpのスイッチ

> cpコマンドに付ける「サブディレクトリまでコピー」「タイムスタンプ比較で新しいものだけ」「上書き確認不要」を意味するスイッチはありますか。
$ man cp
or
$ cp --help
を、まずしましょう。コマンド類には、man、helpが必ずあります。
また、unixコマンド類は、ネットにもmanpageがあります。
”manpage cp” で検索すると、日本語manページがヒットします。
xcopyの機能がどういうものだったか忘れましたが、多分、cp で賄えるのではないでしょうか?
また、バックアップが目的なら、他のコマンドも考えられます。
(rsync http://www.atmarkit.co.jp/flinux/rensai/linuxtips/096dirsync.htmlとか)

> その一つがデータの自動バックアップです。
決まった間隔、時間でコマンドを実行するなら、cron,crontabを検索しましょう。
$ crontab -e
で、ユーザのcron設定ファイルが開きます。
エディタ vim で、cron設定ファイルをオープンしてるので、編集には、vim の簡単な操作を知っておく必要があります。
vim,vim-common,vim-full,vim-gui-commonを私はインストールしてます。すると、
$ vimtutor
で、vimの日本語チュートリアルが立ち上がります。(単に、日本語チュートリアル文書を、vimで開いているだけ)
> UNIXの世界ではそもそも「スイッチ」とは呼ばないのでしょうか。
通常は、オプションでしょうか

オフライン

 

#4 2007-09-02 13:01:25

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

yamaさん、siさん、達人の皆さん、お付き合い頂き有難うございます。
なるほど、、、XCOPYにスイッチ付けて日付比較上書き保存なんて縦穴式住居人並のローテク作業やってるより、Linuxには一行で同期を取ってくれる仕組みがあるんですね。
Linuxは勉強すればWindowsと同じように使えるんじゃないか等とまるで反対の事を考えていました。
LinuxのコマンドはWindowsよりずっと気が利くんですね。

ご指導によりrsyncでやってみました。
rsync -auvz --delete /home/myname /media/disk/ubuntubkup/
でうまく行ったように見えます。
最初
rsync -auvz --delete /home/myname /media/disk/ubuntubkup/myname
と入れてしまい失敗でした。
/mymane/mayname
ともう一つ下に作ってしまいます。
バックアップ元と同じバックアップ先のディレクトリ名称は書かなくていいらしい、、、と見当を付けました。

肝の部分はできたと思いますので、手足の部分を学習させてください。
2回目に同じものを走らせるとざーっとファイル名称が流れますが、よく見ると全てのファイル名称の横に
failed: Operation not permitted (1)
と出ています。
<質問1.>
これはつまり日付が同じだから上書きしないよ、と言っているんですよね?
WindowsのXCOPYでは何も表示しないで読み飛ばししますので少々びっくりしました。

さてコマンドは解かりましたのでこれをダブルクリック起動できるように整えたいところです。
Windowsではこのコマンドをテキストファイルのまま.batという拡張子を付けて保存し、それをダブルクリックすればいつでもcmd.exeが起動してコマンドが仕事をしてくれます。
きっとLinuxのシェルも同じだろうと甘い考えを持ち、これにbkup.shなんて名前を付けてダブルクリックしてみましたが、テキストエディタが開くだけでした(泣笑)。
何か実行形式としての指定をして、そのファイルのランチャーを作るんじゃないかな、、、、と見当は付くのですが、ここから先がLinux3週間目の初心者、情けないことに解りません。
<質問2.>
このコマンドをダブルクリック起動できるようにする技を教えてください。

オフライン

 

#5 2007-09-02 15:42:42

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: cpのスイッチ

Snufkin による投稿:

このコマンドをダブルクリック起動できるようにする技を教えてください。

まず、.shファイルに、実行権を付けます。
$ chmod +x xxx.sh
winと違い、実行ファイルを拡張子で判断するようなことはありません。

実行権を制限したい場合は、実行権を付けたい人(?)を指定します
$ chmod ug+x xxx.sh
 所有者とそのグループに実行権を与え、他人には与えません
 u+x だと所有者のみ
 u ユーザ(ファイルの所有者)
 g ユーザのグループ
 o 他人(others)
 -x とすると、実行権を剥ぎ取ります。

順番が逆でしたね。
次に、xxx.sh の先頭行に、使用するインタープリター?を指定します。
今回は、bashを指定します。
#!/bin/bash
#

また、先頭行に、#!/bin/bashもなく、実行権もついてなくても
$ sh xxx.sh
と、シェルコマンドに、ファイルを読ませれば、実行できます。

最後の編集者: si (2007-09-02 15:52:44)

オフライン

 

#6 2007-09-02 17:34:03

hito
管理者
登録日: 2007-03-18

Re: cpのスイッチ

Snufkin による投稿:

2回目に同じものを走らせるとざーっとファイル名称が流れますが、よく見ると全てのファイル名称の横に
failed: Operation not permitted (1)
と出ています。
<質問1.>
これはつまり日付が同じだから上書きしないよ、と言っているんですよね?
WindowsのXCOPYでは何も表示しないで読み飛ばししますので少々びっくりしました。

いいえ。これはパーミッションの問題で、コピー先に書き込めていないからです。
/media/disk/ubuntubkup/のパーミッションはどうなっているでしょうか?

また、この件と直接関係あるかはわかりませんが、FAT32にたいしてファイルを
直接コピーするべきではありません。FAT32にコピーすることで、ファイルの属性の
うちパーミッションやオーナー関連の部分は失われます。これではバックアップとして
意味がありません。

一度cpioなどにまとめる、ext3のループバックファイルを作る、といった手段はありますが、
面倒なのでバックアップ領域はext3で作っておくことをおすすめします。

オフライン

 

#7 2007-09-02 17:42:54

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

siさん 有難うございました。
bkup.shを/home/myname下に置き
$ sh xxx.sh
で実行できました。

で、、、、物臭太郎な私としては、端末を起動してsh xxx.shを実行するという部分を何とかランチャー(と言うんでしたっけ?要するにWindowsのショートカット)にしてしまいたいのですが、可能でしょうか。
また先ほどの質問と同じになりますが、failed: Operation not permitted (1)が大量に出るのは正常なのでしょうか。
どうもタイムスタンプが同じだから読み飛ばすよ、と言いたいのではないような表現に読めます。
普通の英語として読めば「操作は許されていないので失敗したぞ!」と言っているわけですから。

オフライン

 

#8 2007-09-02 18:36:02

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: cpのスイッチ

> failed: Operation not permitted
は、hito さんのおっしゃる通りだと思います。
(ユーザに書込み権が無い状態でマウントされている。)
また、バックアップに関して、ファイル等の属性が失われる件も、hito さんのおっしゃる通りだと思います。
単にテキストファイルの最新版を残す程度のことなら別ですが、ユーザホームのバックアップとなると、リストア時に問題が出ます。

> ランチャ
これも簡単です。(winと同じだと思います)
デスクトップの、何もないところで、右クリックすると、「ランチャの生成(A)」と言うメニューが出ます。
今回は、
「種類」を「アプリケーション」ー>「端末内で実行」に変更(アプリだとメッセージが確認できない)
「名前」を「ホームのバックアップ」等といれ、「コマンド」を、「参照」から選択する。
アイコンを指定したい場合は、「なし」をクリックするとデフォルトで用意されているものが表示されるので適当なモノを選択、「なし」のままだとデフォルトのコマンドアイコンになる。
このままでも良いのですが、短時間で終了すると、エラーやメッセージを確認するまもなく端末が閉じてしまいます。
メッセージを確認したい場合は、
.sh スクリプトの最後に

echo -n "Hit return: "
read hitkey

とでも付け加えておきます。
ここで、echo "Hit return: ”で、「Hit return: 」と端末に表示、-n で、改行を抑止。
read hitkey は、変数hitkeyにコンソール(キーボード)入力を読み込む(ここでは変数としては使わない)

最後の編集者: si (2007-09-02 18:41:22)

オフライン

 

#9 2007-09-02 19:04:05

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

hitoさん、お世話になります。
> /media/disk/ubuntubkup/のパーミッションはどうなっているでしょうか?

フォルダのアクセス権は「作成と削除」ですが、ファイルのアクセス権は「---」になっています。
これを「読み書き」に変更してもこのシェルを走らせるとまた「---」に戻ってしまいます。
なるほど、これが原因で上書きできないんですね。
最初の1回は間違いなくバックアップできているのですが、完全なファイルでない限りバックアップの意味がありません。
FAT32ディスクでWindows/Linux共有することは止めにします。

> 面倒なのでバックアップ領域はext3で作っておくことをおすすめします。

やたら質問が多くて申し訳ありません。
ext3というのがディスクフォーマット形式の名前だというのは解るのですが、外付けディスクをext3でフォーマットするにはどうすれば良いのでしょうか。

オフライン

 

#10 2007-09-02 20:02:34

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: cpのスイッチ

> 外付けディスクをext3でフォーマットするにはどうすれば良いのでしょうか。
一般的なのは、gparted だと思います。
シナプティックからインストールできます。
システム管理メニューに追加されます。
gpartedを起動し、(/media/disk/なので、usbだと思いますが、問題なく認識するはずです)
右上のディスク選択プルダウンメニューから、外部ディスクを選択し、
そのHDDをアンマウント(領域上で右クリックすればメニューが出ます)。
その上で作業を開始します。
詳しくは、
http://gigazine.net/index.php?/news/comments/20060529_gparted_live_cd/
http://itpro.nikkeibp.co.jp/article/COLUMN/20070416/268352/
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/825usegparted.html
を見てください。

オフライン

 

#11 2007-09-02 21:41:55

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

siさん 有難うございました。
USB外付けディスクのex3フォーマットは完了したようです。
しかし、、、、なかなか意のままになりません。
一切のアクセス権限がなく手も足も出ません。

そこでまたchmodで下のような権限を付けてみました。ちょっと滅茶苦茶な付け方とも思えますが…
drwxrwxrwx  3 root root  4096 2007-09-02 21:02 disk-1
CUIで見ている限り私には読み書き実行権限があるように見えますが、GUIで見ると何も権限がなく読み書きできません。
ディスクのフォーマットまでは成功したけど権限がなくて手も足も出ない、、、、、亀のような歩みで自分でも情なくなってきますが、始めて3週間の初心者などこの程度のものと半ば諦め、お見捨てなくご指導下さい。

オフライン

 

#12 2007-09-03 01:09:46

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: cpのスイッチ

> GUIで見ると何も権限がなく読み書きできません
はい、フォーマットしたてのハードディスクは、root権限がなければ、読み書きは出来ません。
(USBメモリ(FAT)は、user権限でマウントされるようです)
因みに、私のバックアップ用のUSBディスクです。
(HDDとメモリを差し込んだ状態、注 Fedora7で確認してます)
$ ls -l /media
合計 20
drwxr-xr-x 9 root root 4096 2007-09-02 19:47 disk <ー HDD
drwxr-xr-x 3 username root 16384 1970-01-01 09:00 disk-1 <ーメモリ
##t追記 Ubuntuでも同じでした。

$ ls -l /media/disk
合計 68
drwxr-xr-x 16 root  root   4096 2007-04-21 16:46 user
drwxr-xr-x 40 root  root   4096 2007-05-11 23:30 user0
drwxr-xr-x  4 root  root   4096 2007-05-12 02:54 user1
drwx------ 55 user2 user2  4096 2007-05-12 13:58 user2
 ## 追記 Fedoraで作成した Dir なので、Ubuntuでは、
 ## drwx------ 55  500  500  4096 2007-09-03 00:56 imura2
 ## とユーザID番号、アクセス時間で表示される
drwx------  2 root  root  16384 2007-04-04 03:16 lost+found
drwxr-xr-x  6 root  root   4096 2007-06-12 22:05 rrd
-rw-r--r--  1 root  root     14 2007-09-02 19:47 test.txt
drwxr-xr-x  2 root  root   4096 2007-04-19 08:42 yum.repos.d

そこで、バックアップする場合は、sudo でコマンドを起動するか
 *ランチャのコマンドに”sudo ”を追加
ディスクに、user権限のディレクトリを作るかします。
 $ sudo mkdir /media/disk/bkhome
 $ sudo chown username.useername /media/disk/bkhome

注:私もこの辺は詳しく有りませんので、USB機器に書き込みをした場合は、必ず、アンマウント後(バッファをフラッシュするはずだ)、ケーブルを抜くようにしています。

### 追記 アンマウント ###
Ubuntuでは、デスクトップに現れた、diskアイコンの右クリックメニューでは、「アンマウント」の代わりに、「取り出し」と表示され、USBメモリはそれでアンマウントされるが、HDDはできない。
端末から、
$ sudo umount /media/disk
と、しないといけない。こんなことしなくて良いのかな〜?
### 追記 その2 ####
やっぱり、いきなり抜くとおこられるな〜
これって バグ ??

この辺、詳しい方のフォローをお願いしたい。

最後の編集者: si (2007-09-03 19:54:34)

オフライン

 

#13 2007-09-03 21:04:46

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

siさん 有難うございました。

> $ sudo mkdir /media/disk/bkhome
> $ sudo chown username.useername /media/disk/bkhome

なるほど、suで必要なディレクトリを作り、同じくsuでそのオーナーを私に変更する、全部納得できました。
で、その後
rsync -auvz --delete /home/myname /media/disk-1/
で、ちゃんとバックアップが取れたようです。
この1行はbkup.shという名前になっており、/home/myname/下にあります。

後はこの/home/myname/bkup.shを端末ではなくランチャーから起動する方法を研究する必要があります。
既に教えて頂いた方法の組み合わせで何とかできそうな気がしますので、これは明日以降の楽しみにします。

オフライン

 

#14 2007-09-03 21:21:55

Snufkin
メンバ
登録日: 2007-08-27

Re: cpのスイッチ

siさん 有難うございました。
> 既に教えて頂いた方法の組み合わせで何とかできそうな気がしますので、これは明日以降の楽しみにします。
等と言っている間もなくできてしまいました。

これでバックアップに関してはほぼイメージしたとおり、いやそれ以上にできてしまいました。
ご指導下さったsiさん、hitoさん、本当に有難うございました。

初めて触ってもうすぐ1ヶ月、Linuxって、ubuntuって、凄いですね!

オフライン

 

Board footer

Powered by FluxBB