Как сжать файлы в папку

попробуйте разбить на две строки

echo "*/2 * * * *" /usr/bin/aws ssm-send-command (...) >> /etc/cron.d/lvm_disk_space

таким образом *не будет расширяться до локальных имен файлов, и вы получите оставшийся аргумент.

Обратите внимание, что внешняя цитата удалена.

напр.

--document-name "AWS-RunShellScript"

расширяется как

--document-name AWS-RunShellScript
2
16.10.2020, 13:25
3 ответа

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

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

(Я понятия не имею, почему люди ссылаются на tarи gzip. Они не имеют значения, поскольку вы прямо указываете, что вам нужны файлы zip.)

2
18.03.2021, 22:56

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

Это работает для bash, если предположить, что в текущем каталоге

нет каталога (или файла ), уже названного archive.
(
    shopt -s extglob
    mkdir archive &&
        cp -al !(archive) archive &&
        zip -r archive.zip archive
    rm -rf archive
)

Обратите внимание, что новая иерархия каталогов связана, а не копируется, поэтому (a )это быстро, (b )не занимает значительного дополнительного места на диске.

Рабочий пример

# Set up the files in a directory
mkdir secret_name; touch secret_name/file{1,2,3}
cd secret_name/

# Now create the archive
( shopt -s extglob; mkdir archive && cp -al !(archive) archive/ && zip -r archive.zip archive; rm -rf archive )

# List the archive
unzip -l archive.zip

Archive:  archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2020-10-16 19:21   archive/
        0  2020-10-16 19:12   archive/file2
        0  2020-10-16 19:12   archive/file3
        0  2020-10-16 19:12   archive/file1
---------                     -------
        0                     4 files
3
18.03.2021, 22:56

Также это работает с использованием символической ссылки без копирования файлов.

> ls old_parent/
file1  file2

> ln -s old_parent new_parent

> zip -r archive.zip new_parent
  adding: new_parent/ (stored 0%)
  adding: new_parent/file2 (deflated 22%)
  adding: new_parent/file1 (deflated 38%)

> unzip -l archive.zip 
Archive:  archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2020-10-16 22:48   new_parent/
       50  2020-10-14 08:18   new_parent/file2
      348  2020-10-16 13:58   new_parent/file1
---------                     -------
      398                     3 files

> rm new_parent
1
18.03.2021, 22:56

Теги

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