Необходимо добавить переключатель --exclude
в начало команды, см. это . Это решение работает на моем компьютере с openSUSE, других дистрибутивов у меня сейчас нет.
host:/tmp # find test*
test1
test1/file1
test1/__pycache__
test1/__pycache__/file1-py
test1/include
test1/include/file1-incl
test2
test2/__pycache__
test2/__pycache__/file2-py
test2/include
test2/include/file2-incl
test2/file2
host: # tar --exclude='__pycache__' -cv test* -f testtar.tar
test1/
test1/file1
test1/include/
test1/include/file1-incl
test2/
test2/include/
test2/include/file2-incl
test2/file2
У меня была еще одна проблема: я хотел, чтобы рабочие серверы обновляли пакеты позже, чем рабочие серверы и серверы разработки.
Если возможно, я бы выбрал инструмент управления исправлениями, такой как Foreman Katello и несколько локальных репозиториев yum.
Мое решение далеко не красивое, но оно работает:
repoquery -a --pkgnarrow=updates --qf="%{name}-%{epoch}:%{version}-%{release}.%{arch} %{filetime}" |
awk -v daysago=$(date --date="7 days ago" +%s) '$NF < daysago' |
cut -f1 -d" " |
xargs yum update --assumeyes
Пояснение:
repoquery
Перечисляет обновления и добавляет информацию о времени файла в конце, разделенном пробелом awk
Последний раздел фильтров для даты старше семи дней (изменить в соответствии с вашими потребностями)cut
Разделить по пробелам и удалить последнюю часть (фактически пробелы и отметку времени)xargs -r yum update
Вставить список в команду yum update
. При желании вы также можете фильтровать обновления безопасности здесь с помощью --security
.