Spec-Zone.ru › Elisp

Резервное копирование путём переименования или копирования?

Существует два способа, которыми Emacs может создать резервную копию файла:

  • Emacs может переименовать исходный файл, превратив его в резервную копию, а затем записать содержимое буфера в новый файл. После этой процедуры любые другие имена (т.е., жёсткие ссылки) исходного файла теперь ссылаются на резервную копию. Новый файл принадлежит пользователю, производящему редактирование, а его группа — это значение по умолчанию для новых файлов, созданных пользователем в этом каталоге.
  • Emacs может скопировать исходный файл в резервную копию, а затем перезаписать исходный файл новым содержимым. После этой процедуры любые другие имена (т.е., жёсткие ссылки) исходного файла по-прежнему ссылаются на текущую (обновлённую) версию файла. Владелец и группа файла останутся неизменными.

Первый метод, переименование, является значением по умолчанию.

Переменная backup-by-copying, если она не nil, указывает на использование второго метода, который заключается в копировании исходного файла и перезаписи его содержимого новым буфером. Переменная file-precious-flag, если она не nil, также имеет этот эффект (как побочный результат её основного назначения). См. Сохранение буферов.

Вариант пользователя: backup-by-copying

Если эта переменная не nil, Emacs всегда создаёт резервные копии путём копирования. Значение по умолчанию — nil.

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

Вариант пользователя: backup-by-copying-when-linked

Если эта переменная не nil, Emacs создаёт резервные копии путём копирования для файлов с несколькими именами (жёсткими ссылками). Значение по умолчанию — nil.

Эта переменная имеет значение только в том случае, если backup-by-copying равно nil, так как копирование всегда используется, когда эта переменная не nil.

Вариант пользователя: backup-by-copying-when-mismatch

Если эта переменная не nil (значение по умолчанию), Emacs создаёт резервные копии путём копирования в тех случаях, когда переименование изменило бы владельца или группу файла.

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

Эта переменная имеет значение только в том случае, если backup-by-copying равно nil, так как копирование всегда используется, когда эта переменная не nil.

Вариант пользователя: backup-by-copying-when-privileged-mismatch

Эта переменная, если она не nil, задаёт такое же поведение, как и backup-by-copying-when-mismatch, но только для определённых значений идентификаторов пользователей и групп: именно тех, которые меньше или равны определённому числу. Вы устанавливаете эту переменную на это число.

Таким образом, если вы установите backup-by-copying-when-privileged-mismatch в 0, резервное копирование путём копирования выполняется только для суперпользователя и группы 0, когда это необходимо, чтобы предотвратить изменение владельца файла.

Значение по умолчанию — 200.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Rename-or-Copy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API