Резервное копирование путём переименования или копирования?
Существует два способа, которыми 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