戸塚 キコーナk8 カジノ【 cp 】コマンド(応用編その2)――属性を保持したままコピーする仮想通貨カジノパチンコ真 北斗 無双 パチンコ 曲

戸塚 キコーナk8 カジノ【 cp 】コマンド(応用編その2)――属性を保持したままコピーする仮想通貨カジノパチンコ真 北斗 無双 パチンコ 曲

ビット バンク 登録k8 カジノ 「Linux基本コマンドTips」のインデックス

パチスロ あの 花 フリーズLinux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「cp」コマンドで属性を保持したままコピーする方法を解説します。

cpコマンド――ファイルをコピーする(本連載 第17回)cpコマンド(応用編その1)――ディレクトリをコピーする(本連載 第18回)目次

cpコマンドの概要 | 書式 | オプション一覧

実行例「cp -a」でなるべく“そっくりそのまま”コピーするシンボリックリンクをコピーする属性を保持したままコピーするcpコマンドとは?

 Linuxでは、ファイルをコピーする際には「cp」コマンドを使います。「cp コピー元 コピー先」のように指定します。コピー先にディレクトリを指定した場合は、指定したディレクトリにコピー元と同じ名前のファイルが作成されます。

目次に戻る

cpコマンドの書式

cp [オプション] コピー元 コピー先

cp [オプション] ファイル1 ファイル2…… コピー先ディレクトリ

※[ ]は省略可能な引数を示しています

cpコマンドの主なオプション

 cpコマンドの主なオプションは次の通りです。

●一般的なオプション

短いオプション長いオプション意味-i–interactive上書きする前に確認する-v–verbose実行内容を表示する-n–no-clobber存在するファイルを上書きしない-f–force強制的に上書きする-b–backup=方法上書きされるファイルのバックアップを作る(「ln」コマンド参照)[方法]:「numbered」または「t」の場合は番号の添え字、「simple」または「never」の場合はファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の場合は既にあるファイルに従う(ない場合はで「simple」と同じ)-S 接尾辞–suffix=接尾辞バックアップファイルを作る際のファイル名末尾に付ける文字(無指定時は「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う)
●リンク関係のオプション

短いオプション長いオプション意味-dシンボリックリンク自体をコピーする(–no-dereference –preserve=linksと同様)-s–symbolic-linkコピーの代わりにシンボリックリンクを作成する-l–linkコピーの代わりにファイルのハードリンクを作成する-L–dereferenceコピー元のシンボリックリンクを常にたどる-P–no-dereferenceコピー元にあるシンボリックリンクをたどらない
●ディレクトリ関係のオプション

短いオプション長いオプション意味-R,-r–recursiveコピー元にディレクトリを指定した場合、再帰的に(サブディレクトリも含めて)コピーする-t ディレクトリ名–target-directory=ディレクトリ名「-t」で指定したディレクトリにコピーする-T–no-target-directoryコピー先(最後の引数)がディレクトリでも特別扱いしない
●属性関係のオプション

短いオプション長いオプション意味-a–archiveサブディレクトリや属性なども含め、可能な限り全てを保持しながらコピーする(-dR –preserve=allと同様)-u–updateコピー元のファイルがコピー先ファイルより新しいか新規ファイルの場合だけコピーする-pパーミッションと所有者とタイムスタンプを保持する(–preserve=mode,ownership,timestamps相当)–preserve[=属性リスト]指定した属性を保持する。属性を指定しなかった場合は、mode(パーミッション)、ownership(所有者)、timestamps(タイムスタンプ)が保持される。その他、context(コンテキスト情報)、links(ディレクトリ内のハードリンク)、xattr(ファイルシステムの拡張属性)、all(可能な限り全ての属性)を指定可能–no-preserve=属性リスト指定した属性を保持しない–attributes-onlyファイルのデータをコピーせず、ファイルの属性のみコピーする

目次に戻る

「cp -a」でなるべく“そっくりそのまま”コピーする

 cpコマンドによるファイルのコピーは、“同じ内容のファイルを作成する”という動作になっています。つまり、「ファイルの所有者」はcpコマンドを実行したユーザーであり、「タイムスタンプ」はcpコマンドを実行した時刻、「パーミッション」は「umask(マスク値)」の影響を受けます。

 「-a」は「-d(シンボリックリンクをそのままコピー)」「-R(ディレクトリを再帰的にコピー:応用編その1参照)」「–preserve=all(属性を保持)」の3つのオプションを同時に指定した場合と同じで、「ファイルもディレクトリも、なるべくそのままコピーする」という動作になります(※)。

※「-a」は比較的新しいオプションですので、Linuxディストリビューションによっては対応していないcpコマンドがあるかもしれません。

コマンド実行例

cp -a file1 file2

(「file1」を「file2」にコピーする。ファイルの属性はなるべく保持され、シンボリックリンクはそのままコピーされる)

cp -a dir1 dir2

(「dir1」を「dir2」にコピーする。ディレクトリの内容もそのままコピーされる)

 ただし、自分の権限では作ることができない属性やファイルは、例え「cp -a」でも作成できません。例えば、他人が所有しているファイルを「cp -a」でコピーした場合、他人の所有権では作成できないため、所有者は自分自身に変更されます。従って、所有者も含めた全て属性を保持するには、「root」ユーザーで実行する必要があります。

目次に戻る

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

 「シンボリックリンク」とは“ファイルの別名”で、普段の操作ではシンボリックリンクかどうかを意識することなく使用できます。従って、シンボリックリンクをコピーするのは、ファイルの実体をコピーするのと同じ動作になります。

$ ls / > filelist.txt(テスト用のファイルを作成。内容は何でもよいので、ここでは「ls /」の内容を保存して新規ファイルを作成している)$ ln -s filelist.txt mylist.txt(「filelist.txt」のシンボリックリンク「mylist.txt」を作成)$ ls -l *(ファイルを確認)-rw-rw-r–. 1 study study 85 5月 25 22:20 filelist.txtlrwxrwxrwx. 1 study study 12 5月 25 22:34 mylist.txt -> filelist.txt(「filelist.txt」と「mylist.txt」があり、「mylist.txt」は「filelist.txt」へのシンボリックリンク)$ cp mylist.txt newlist.txt(「mylist.txt」を「newlist.txt」にコピー)$ ls -l *-rw-rw-r–. 1 study study 85 5月 25 22:20 filelist.txtlrwxrwxrwx. 1 study study 12 5月 25 22:34 mylist.txt -> filelist.txt-rw-rw-r–. 1 study study 85 5月 25 22:35 newlist.txt(「newlist.txt」は通常のファイル)シンボリックリンクのコピーは、ファイルの実体をコピーするのと同じ

 以上の実行例のように、「newlist.txt」は「mylist.txt」(つまり「filelist.txt」)のコピーなので、この後、「newlist.txt」を編集しても当然「mylist.txt」(すなわち「filelist.txt」)には影響しませんし、「mylist.txt」や「filelist.txt」を削除しても「newlist.txt」には影響しません。これが通常の“ファイルのコピー”です。

 しかし、何らかの理由で「シンボリックリンクそのものをコピーしたい」という場合があるかもしれません。そのような場合には「-d」オプションを使うことで、シンボリックリンクをコピーできます。以下の例では、先ほどのファイル(「filelist.txt」「mylist.txt」「newlist.txt」)がある状態で実行しています。

$ cp -d mylist.txt reflist.txt$ ls -l *-rw-rw-r–. 1 study study 85 5月 25 22:20 filelist.txtlrwxrwxrwx. 1 study study 12 5月 25 22:34 mylist.txt -> filelist.txt-rw-rw-r–. 1 study study 85 5月 25 22:35 newlist.txtlrwxrwxrwx. 1 study study 12 5月 25 22:36 reflist.txt -> filelist.txt「-d」オプションを使うことで、シンボリックリンクそのものをコピーできる

目次に戻る

属性を保持したままコピーする

 「-p」オプションで、「パーミッション」「所有者」「タイムスタンプ」を保持したままコピーすることができます。ただし、所有者の保持には“元の所有者の権限”が必要なので、所有者自身または「root」ユーザーで実行する必要があります。

$ ls / > filelist.txt(テスト用のファイルを作成、内容は何でもよい)$ touch -t 05010000 filelist.txt(「filelist.txt」のタイムスタンプを「5月1日」の「00:00」に設定)$ chmod 777 filelist.txt(「filelist.txt」のパーミッションを666(rw-rw-rw-)に設定)$ cp filelist.txt filelist2.txt(「filelist.txt」を「filelist2.txt」にコピー)$ cp -p filelist.txt filelist3.txt(「filelist.txt」を「-p」オプション付きで「filelist3.txt」にコピー)$ ls -l filelist*-rwxrwxrwx. 1 study study 85 5月 1 00:00 filelist.txt-rwxrwxr-x. 1 study study 85 5月 25 22:54 filelist2.txt-rwxrwxrwx. 1 study study 85 5月 1 00:00 filelist3.txt「filelist2.txt」はタイムスタンプやパーミッションが変化しているが、「filelist3.txt」では保持されていることが分かる

※本稿を執筆したCentOS 7の環境では、「umask 0002」が設定されているため、所有者と所有グループ以外のユーザーの書き込み権限が取り除かれています。

目次に戻る

筆者紹介西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。

仮想通貨カジノパチンコau pay スーパー 20 還元

コメントを残す