2012-11-26 19 views
7

Wierzę, że ma on być atomowy i słyszałem, że vim zapisuje do tymczasowego katalogu, a następnie mv plik tymczasowy do starego pliku, aby upewnić się, że EITHER stara wersja LUB jest obecna, i nigdy nie jednego lub wcale pliku, nawet jeśli zasilanie zostanie wyłączone w połowie zapisu.W jaki sposób vim zapisuje pliki?

Czy ktoś ma więcej informacji?

Odpowiedz

4

Masz rację co do ogólnego podejścia; Aby uzyskać więcej informacji, zobacz :help backup.

Możesz dostroić podejście poprzez ustawienia; Jest to ważne, gdy zajmujesz się plikami z twardą linią lub używasz interfejsów API, takich jak , inotify, aby reagować na zmiany w systemie plików.

Dodatkowo, plik wymiany (:help swap-file) i trwałe cofanie (:help persistent-undo) pomagają w uniknięciu utraty danych, nawet w przypadku awarii dysku.

7

Sposób wykonania tej czynności zależy od wartości kilku opcji.

Główną opcją, która ma wpływ na to jest backupcopy, w systemach uniksowych domyślnie jest to yes w innych systemach domyślnie jest to auto. Tylko jeśli jest ustawiony na no, możesz mieć pewność, że zapis zostanie wykonany tak jak w pytaniu. Po ustawieniu na yes vim zastąpi oryginalną zawartość pliku po wykonaniu kopii zapasowej. Jeśli ustawione na auto, zachowa się tak jak w pytaniu, czy wykryje, że można przekazać atrybuty, a plik nie jest łączem (ani dowiązaniem symbolicznym, ani twardym). Istnieją dodatkowe wartości opcji umożliwiającej przerwanie linków, zobacz pomoc dla tej opcji.

Inne opcje, które mają na to wpływ, to: backup, writebackup. Co najmniej jeden z nich musi zostać ustawiony, aby w ogóle utworzyć kopię zapasową. Jeśli nie zostanie wykonana kopia zapasowa, oryginalna zawartość pliku zostanie nadpisana. Opcja writebackup jest domyślnie włączona, dopóki vim został skompilowany z obsługą. Dostępna jest również opcja backupskip, która określa listę wzorców plików, dla których nie będą wykonywane żadne kopie zapasowe; jeśli jeden z tych wzorów pasuje do pliku, ponownie nie zostanie wykonana kopia zapasowa, a oryginalna zawartość pliku zostanie nadpisana.

Powiązane problemy