Есть ли способ создать копию каталога при копировании при записи?

14

Я думаю о ситуации, когда у меня будет что-то, что создаст копию каталога, настроит несколько файлов, а затем выполнит некоторую обработку результата. Это можно сделать довольно часто, может быть, несколько десятков раз в день. (Точный вариант использования - тестирование представлений исправлений; дублирование кода, исправление его, сборка / тестирование / отчет / и т. Д.)

То, что я ищу, можно сделать, создав новую структуру каталогов и наполнив ее жесткими ссылками из оригинала. Однако это работает, только если все инструменты, которые вы используете, удаляют и воссоздают файлы, а не редактируют их на месте.

Есть ли способ заставить файловую систему выполнять копирование при записи для файла?


Примечание. Мне известно, что многие ПС используют COW на уровне блоков (все обновления выполняются путем записи в новые блоки), но это не то, что мне нужно.

BCS
источник
Похоже, не поддерживается, но, возможно, boklm.eu/copyfs
Zoredache
Итак, вы хотите выполнять копирование при записи через файловую систему, но вам не нужна файловая система, которая использует копирование при записи? Я не совсем понимаю.
Камил Кисиэль
1
@Kamil Kisiel: Я хочу COW на уровне файлов, а не COW на уровне блоков. Результаты COW файлового уровня cpи lnделает почти точно то же самое. COW на уровне блоков - это хитрость, позволяющая минимизировать интервал неверности метаданных FS: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_model
BCS
На какой системе предполагается использовать эту систему?
Джон Гарденье
Это достаточно умозрительно, что если вы не знаете, как сделать это для какой-то настройки (в этом случае просто опубликуйте это), я бы не хотел, чтобы люди тратили время на то, чтобы понять, как это сделать (если они не делают это для развлечения :)
BCS

Ответы:

7

Если у вас есть выбор платформы для вашего файлового сервера, я бы пошел с последней сборкой OpenSolaris и использовал бы функцию дедупликации ZFS. Таким образом, копии файлов не будут занимать дополнительное пространство, и даже общие сегменты между файлами не будут реплицироваться.

Вы можете прочитать все о дедупликации ZFS в этом посте в блоге Джеффа Бонвика .

Камил Кисиэль
источник
1
ZFS потрясающий; это изменит ваше представление о хранилище
tegbains
Опрятно, если только нет недостатка в том, чтобы включить его на весь диск.
BCS
Я добавил ссылку на пост в блоге, который содержит больше технических деталей. Вы можете увидеть, если это то, что вам нужно там.
Камил Кисиэль
Новый URL для поста Джеффа Бонвика
Матье
0

Большинство решений для виртуализации Linux предлагают COW на уровне файлов среди виртуализированных ОС (скопировано из WP):

  • ДА:
    • Docker, Linux-VServer, lmctfy, LXC, Singularity, Virtuozzo, Sandboxie, systemd-nspawn, контейнеры Solaris (ZFS), тюрьма FreeBSD (ZFS), OpenVZ
  • NO:
    • chroot, sysjail, WPAR, виртуальные учетные записи iCore, Turbo
ankostis
источник
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы,
Ромео Нинов,
-2

Может быть SVN или другой инструмент управления версиями (git, cvs)?

Дмитрий Труханов
источник
Это еще хуже, потому что он создает две копии каждого файла и сосет их через сокет.
BCS