テクノロジー

`cp`はディスク上ではデータをコピーしないことがある

1: hevohevo 2026/06/16 16:55

知らなかった。reflinkは明示的に使う機能だと思っていたので、デフォで有効になっていることが驚きです。これほど影響範囲の広いパッケージで、デフォ挙動の変更を行うにあたってどのような議論があったのでしょうか

2: kyahi227 2026/06/17 03:26

どうせfs依存だろと思った

3: sisya 2026/06/17 05:34

大きなデータに対する障害体制は弱くなってしまうし、小さいデータはこんなことをして容量を節約する意味もないので、正直やめてほしい。

4: nguyen-oi 2026/06/17 07:08

裏でCoWが勝手に走ってたの、言われなきゃ一瞬でコピー完了して速いな〜で済ませてた

5: sgo2 2026/06/17 07:12

https://www.tohoho-web.com/linux/cmd/cp.html#special-features --reflinkオプションの解説を読めば分かるけどreflinkはCopy on Write(変更される時点でコピーが作成される)なので当然と言えば当然の挙動

6: UhoNiceGuy 2026/06/17 07:20

copy on writeとのこと。ファイル全体でなく、部分的にも管理してくれるのね//バックアップ用途なら別ストレージ使えば、この機能は使われないよね

7: suka6411144 2026/06/17 07:30

macにもCoWのコピーがあるけど、あっちは-cオプションを渡さないと有効にならないんだよな

8: punychan 2026/06/17 07:36

物理故障(ビット化けなど)への耐性のために同じFS内でcpするなんてありえないので、CoW大歓迎よ。

9: dollarss 2026/06/17 08:02

えっ?!sync;sync;sync;reboot ってしないとだめなのか?

10: circled 2026/06/17 08:18

ZFS勢には2005年くらいから既知だし、APFS(2017年)からも普通に使われている(WWDCでも高速ファイルコピーのデモがあった)。Arch Linuxユーザーはbtrfs利用が多いのでLinux勢にも既知かと思ってたよ

11: rawwell 2026/06/17 08:41

"never: 必ずデータコピーする。 " えっなにそれこわい。業務でxfs 使うが知らなかった…

12: mas-higa 2026/06/17 08:55

それ cp コマンドじゃなくて、ファイルシステムの仕様じゃないの…と思って読み始めたら、そう書いてあった。

13: keidge 2026/06/17 09:29

これはファイルシステム上の話だが、そもそもファイルシステムより低いレイヤの物理ストレージでも似たような状況になっている。スナップショット機能を実現するためであったり、いろんな要因がある。

14: Nyoho 2026/06/17 09:34

btrfsを勉強したときにbtrfsなどが使っていることを知りました。本当に違いが出たら書き込む。素晴らしいですね。たぶんスナップショットが一瞬なのもそれだったような(?)

15: yarumato 2026/06/17 09:50

“別ファイルで同じデータを共有できるreflink使えるファイルシステムはLinuxではXFS,Btrfs。GNU cp(2021以降)はreflinkを使えたら使う。ext4なら遅いがXFSなら一瞬。同ディスク内のコピーがバックアップにならない問題も”

16: sucelie 2026/06/17 10:01

zfsあたりの話じゃないの?って思ったら似たような話だった

17: Shinwiki 2026/06/17 10:05

しゃろう?

18: kobito19 2026/06/17 10:19

"reflnkが使えたら使う" っていうcpの仕様(デフォルト挙動の選択)やろがい

19: daishi_n 2026/06/17 10:33

コピーオンライトとか対応してるファイルシステムならコピーしないで書き込み時にコピーするよね

20: gogatsu26 2026/06/17 11:01

“cpはreflinkを使えたら使うというモードになっています。つまり、XFSやBtrfsでcp <src> <dest>を実行すると<src>と<dest>はコマンド実行直後はファイルコンテンツをディスク上で全て共有するようになり”

21: rail44 2026/06/17 11:14

AIで並列に開発する時に、git管理外のファイルも難しいことせずに単にworktreeへCoWで持ち込めばいいよねってのに繋がる

22: hatest 2026/06/17 11:16

同一ドライブでコピーしてる時点で、障害体制もクソもないから参照で済ます方が賢いだろ

23: kanikanidokokani 2026/06/17 11:20

早いし不整合も起きないしフラグで選択できるしよく出来た仕組みだな~(こなみ

24: dot 2026/06/17 11:35

ファイルシステムのことやろなと読み始めたらやっぱりか。

25: strawberryhunter 2026/06/17 11:48

ext4がそうじゃないっぽいことの方が意外だった。

26: heguro 2026/06/17 12:13

デフォルトでreflink出来ればするようになってたのは知らなかった

27: jacoby 2026/06/17 12:18

sync;sync;sync;とオマジナイ唱えてshutdownみたい

28: toaruR 2026/06/17 12:45

これ、ファイルシステムによっては、仮想機のスナップショットでバックアップ取ったときひょっとする?!