Есть ли способ разложить переменную на несколько аргументов без подстановки в bash?

Файловая система S3QL имеет дедупликацию на уровне блоков. Он продвигается как решение для облачного хранения S3, но оно также очень хорошо работает в локальном хранилище.

Вот пример из части нашего резервного/архивного сервера

s3qlstat /path/to/some/archives
Directory entries:    12430247
Inodes:               6343756
Data blocks:          1357349
Total data size:      12.4 TB
After de-duplication: 3.84 TB (30.92% of total)
After compression:    3.71 TB (29.84% of total, 96.52% of de-duplicated)
Database size:        1.29 GiB (uncompressed)
Cache size:           0 bytes, 0 entries
Cache size (dirty):   0 bytes, 0 entries
Queued object removals: 0

Основное хранилище, которое использует эта файловая система

df -h /var/s3ql/part-of-archive
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde        6.0T  3.8T  2.0T  66% /var/s3ql/part-of-archive

Это говорит мне о том, что основное хранилище использует чуть меньше 4 ТБ, но хранит около 12 ТБ дедуплицированных данных. (В моих архивах довольно много дублированных блоков. Неудивительно, я надеюсь. )Уровень сжатия здесь отключен; если бы я использовал настоящее хранилище S3, я бы оставил его включенным.

База данных SQLite, которая управляет самой файловой системой, имеет размер чуть более 1 ГБ, что довольно много, но, поскольку я использую ее для архивирования, а не для полной -работы с высоким спросом, это нормально.

1
08.03.2021, 21:10
1 ответ

Использовать массив и заключать его в кавычки:

expression=('-type' 'f' '-name' '*.csv' '-mtime' '+14')
find /var/data "${expression[@]}" -delete -print

Каждый элемент будет расширяться отдельно, но без разделения слов/подстановки.

1
18.03.2021, 22:26

Теги

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