Команда tar Linux: сжатие каталога, но, исключая подкаталоги

Другие указали на метод deleteCharAt, но вот еще один альтернативный подход:

String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  prefix = ",";
  sb.append(serverId);
}

В качестве альтернативы, используйте класс Joiner из Гуава :)

Начиная с Java 8, StringJoiner является частью стандарта JRE.

5
задан VinkoCM 27 June 2009 в 15:47
поделиться

3 ответа

Вы ищете аргумент - exclude .

--exclude=PATTERN

Некоторые пользователи находят параметры exclude запутанными. Вот несколько распространенных ошибок:

  • Основной режим работы tar не влияет на имя пути явно указан в командной строке, если одно из его имени файла компоненты исключены. В приведенном выше примере, если вы создаете заархивировать и исключить файлы, которые заканчиваются на *. o , но явно называют файл dir.o / foo после того, как были перечислены все параметры, dir.o / foo будет исключен из архива.

  • Иногда можно перепутать значения - exclude = PATTERN и - exclude-from = FILE-OF-PATTERNS ( -X FILE-OF-PATTERNS ). Быть осторожно: используйте - exclude = PATTERN , когда исключаемые файлы дается как шаблон в командной строке. Использовать - exclude-from = FILE-OF-PATTERNS , чтобы ввести имя файла который содержит список шаблонов, по одному в строке; каждый из них шаблоны могут исключать ноль, один или несколько файлов.

  • Когда вы используете - exclude = PATTERN , обязательно указывайте PATTERN параметр, поэтому GNU tar видит символы подстановки, такие как * . если ты не делайте этого, оболочка может расширить сам * с помощью файлов под рукой, поэтому tar может получить список файлов вместо одного шаблон или вообще ничего, что делает команду несколько незаконной. Это может не соответствовать тому, что вы хотите.

Например, напишите:

$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY

вместо:

$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
  • Вы должны использовать синтаксис оболочки или подстановку вместо regexp синтаксис при использовании опций исключения в tar . Если вы попытаетесь использовать regexp синтаксис для описания исключаемых файлов, ваша команда может выйти из строя.
12
ответ дан 18 December 2019 в 12:00
поделиться
tar -czpf /path/to/backups/my_backup.tar.gz --exclude path/to/images/tmp path/to/images/
3
ответ дан 18 December 2019 в 12:00
поделиться

Это должно работать (при условии GNU tar):

tar -czpf /path/to/backups/my_backup.tar.gz --exclude=tmp path/to/images/
0
ответ дан 18 December 2019 в 12:00
поделиться
Другие вопросы по тегам:

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