Удалять все файлы резервных копий, кроме последнего, по месяцам

корень - может быть только один.

(но корень может иметь несколько имен).

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

Типичными примерами этого являются имена учетной записи как toor которые создаются (например, на некоторых *bsd системы) с UID 0 как альтернативный корневой вход в систему - возможно, с /bin/csh вместо /bin/sh как оболочка или некоторая другая несерьезная причина.

Однако как несколько человек уже сказали, Вы не хотите делать это. Можно думать, что Вы делаете, но Вы действительно не делаете. Установите и настройте sudo вместо этого.

3
08.10.2015, 20:33
2 ответа

Эта единственная строка предоставит вам файлы, которые вы хотите удалить:

(ls -1 db_ * _foo.tgz; echo) | awk '{prevym = ym; prevfile = файл; ym = substr (0,4,6 $); файл = $ 0; if (ym == prevym) print prevfile} '

Первая часть просто перечисляет ВСЕ файлы (и добавляет дополнительную строку в конец списка, чтобы упростить последующую команду awk). Часть awk просто проверяет каждую строку, чтобы увидеть, изменился ли ym (год-месяц) от одной строки к другой.

Проверьте и убедитесь, что в приведенном выше списке перечислены файлы, которые вы НЕОБХОДИМО удалить. Затем, чтобы удалить все файлы, просто введите команду по конвейеру:

... ABOVE_COMMAND ... | xargs rm

2
27.01.2020, 21:22

ответ из ниоткуда: ruby. у него есть хороший group_by метод, так что вы можете взять файлы с одинаковым "ключом" (первые 9 символов имени файла):

files = Dir.glob("*")
to_delete = []
files.group_by {|f| f[0,9]}.each_pair {|k,v| to_delete.push *(v.sort[0..-2])}
puts "removing: #{to_delete}"
File.delete to_delete
1
27.01.2020, 21:22

Теги

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