Как сохранить демон Emacs на удаленном

Разделение файлов в /etc по разделам - плохая идея по этой причине.

Происходит то, что утилита groupadd создает временный файл, а затем заменяет настоящий файл /etc/groups (точнее, тот, на который указывает симлинк) на временный с помощью простой операции rename.
Загвоздка в том, что rename() работает только в одной и той же файловой системе, иначе выдает ошибку.

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

Другая потенциальная проблема заключается в том, что многие файлы в /etc требуются для правильной загрузки, прежде чем у системы появится шанс смонтировать другие тома. Таким образом, эти файлы будут фактически отсутствовать.

Короче говоря, нет, это не может быть исправлено. И в любом случае этого не следует делать.

1
12.03.2019, 07:32
3 ответа

Я нашел решение с использованием tar, как было предложено в ответе @Haxiel. Используемая команда выглядит так:

tar -c -L1G -H posix -f /backup/somearchive.tar -F '/usr/bin/tar-volume.sh' somefolder

-L:Определяет предельный размер архива, т.е. 1 Гб

-H:Должен использоваться формат posix, иначе длинные имена файлов усекаются

-F:Сценарий тома необходим для создания последовательных имен архивных файлов для tar

Эта команда создаст многотомный -архив в формате somearchive.tar, somearchive.tar -2, somearchive.tar -3...

Ниже приведен мой tar -volume.sh , адаптированный из этого туториала .

#!/bin/bash

echo Preparing volume $TAR_VOLUME of $TAR_ARCHIVE
name=`expr $TAR_ARCHIVE : '\(.*\)\(-[0-9]*\)$'`

case $TAR_SUBCOMMAND in
-c)       ;;
-d|-x|-t) test -r ${name:-$TAR_ARCHIVE}-$TAR_VOLUME || exit 1
          ;;
*)        exit 1
esac

echo ${name:-$TAR_ARCHIVE}-$TAR_VOLUME >&$TAR_FD

Чтобы просмотреть содержимое, скажем, 3-го тома архива:

tar -tf /backup/somearchive.tar-3

Извлечение определенного тома архива:

tar -xf /backup/somearchive.tar-3

Обратите внимание: если вы извлекаете только один том, могут быть неполные файлы, которые были разделены в начале или конце архива на другой том. Tar создаст подпапку с именем GNUFileParts.xxxx/filename , содержащую незавершенный файл (s ).

Чтобы извлечь весь набор томов в Unix, вам нужно снова запустить его через сценарий тома:

tar -xf /backup/somearchive.tar -F '/usr/bin/tar-volume.sh'

Если вы извлекаете их в Windows, команда tar не может правильно запустить сценарий тома, поскольку для этого требуется оболочка bash. Вам нужно будет вручную ввести имена файлов томов в командной строке, сначала выполнив эту команду:

tar -xf somearchive.tar -M

-M указывает, что это многотомный -архив. Когда tar завершит извлечение первого тома,вам будет предложено ввести имя следующего тома, пока все тома не будут извлечены.

Если есть много томов, вы можете просто сначала ввести все последовательности имен томов, а затем скопировать и вставить весь пакет в командную строку tar после извлечения первого тома:

n somearchive.tar-2
n somearchive.tar-3
n somearchive.tar-4

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

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

Дополнительные сведения см. в документации по tar . Н

3
27.01.2020, 23:41

Это не идеальное решение, но многотомные -архивы GNU tarкажутся близкими к тому, что вы ищете. Этот вариант уже упоминался в вашем вопросе, но я хотел бы добавить ссылку из руководства GNU tar, которая разъясняет, почему это возможный вариант:

Multi-volume archive is a single tar archive, stored on several media volumes of fixed size. Although in this section we will often call `volume' a tape, there is absolutely no requirement for multi-volume archives to be stored on tapes. Instead, they can use whatever media type the user finds convenient, they can even be located on files.

When creating a multi-volume archive, GNU tar continues to fill current volume until it runs out of space, then it switches to next volume (usually the operator is queried to replace the tape on this point), and continues working on the new volume. This operation continues until all requested files are dumped. If GNU tar detects end of media while dumping a file, such a file is archived in split form. Some very big files can even be split across several volumes.

Each volume is itself a valid GNU tar archive, so it can be read without any special options. Consequently any file member residing entirely on one volume can be extracted or otherwise operated upon without needing the other volume. Sure enough, to extract a split member you would need all volumes its parts reside on.

Multi-volume archives suffer from several limitations. In particular, they cannot be compressed.

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

Для каждого тома можно идентифицировать разделенные файлы с помощью параметра -v.

$ tar -tf multi-test2.tar -v
M--------- 0/0          658432 1970-01-01 03:00 file1--Continued at byte 7341568--
-rw-r--r-- test/users 4000000 2019-03-06 12:12 file2

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

Разделенные файлы также можно извлечь как единое целое из нескольких томов с помощью параметра -M, который предложит вам ввести имя следующего тома. Использование задокументировано здесь . Вместо этого, если вы предпочитаете объединять тома в один архив, вы также можете воспользоваться утилитой tarcat .

3
27.01.2020, 23:41

Если вы используете

star -c tsize=1G...

вы получаете tar-архивы, разделенные таким образом, что они становятся независимыми.

Не забудьте указать достаточно f=filenameпараметров для хранения всех архивов в разных файлах. Вам необходимо указать столько параметров f=, сколько необходимо, учитывая тот факт, что не все архивы достигают полного размера.

-1
27.01.2020, 23:41

Теги

Похожие вопросы