Переименуйте файл и добавьте к нему префикс даты и времени.

Вы не можете войти в chroot, потому что вам нужен /dev/log относительно корня вашего chroot. (это известная "особенность" ).

Вернувшись в rsyslog, вы добавляете аналогичную конфигурацию к этой:

/etc/rsyslogd.conf
$AddUnixListenSocket /chroots/user1/dev/log

И перезапуститеrsyslog(вне chroot)

См. Как вести журнал внутренних -sftp chroot заключенных в тюрьму пользователей

3
19.10.2019, 01:27
2 ответа

Я бы посоветовал избегать зацикливания вывода команды findпо причинам, обсуждаемым здесь:

Вместо этого рассмотрите возможность использования -execdirс одним вкладышем -для удаления компонентов пути:

#!/bin/bash

export NOW=$(date +%Y-%m-%d-%H%M%S)

find /path/to/file -type f ! -name '*.*' -execdir sh -c '
  for f; do echo mv "$f" "${NOW}_${f#./}"; done
' find-sh {} +

Удалите echo, как только убедитесь, что он работает правильно. Обратите внимание, что NOWнеобходимо экспортировать, чтобы его значение было доступно в подоболочке sh -c.

Если ваша реализация findне предоставляет -execdir, вы можете использовать -exec, если вы удалите и замените путь явно:

find /path/to/file -type f ! -name '*.*' -exec sh -c '
  p="${1%/*}"; echo mv "$1" "$p/${NOW}_${1##*/}"
' find-sh {} \;
3
27.01.2020, 21:17

Использование GNU Parallel:

find /path/to/file -type f ! -name "*.*" -print0 |
  parallel -0 mv {} {//}/$(date +%Y-%m-%d-%H%M%S)_{/}.txt

Рассмотрите возможность использования ISO8601 для меток времени:

find /path/to/file -type f ! -name "*.*" -print0 |
  parallel -0 mv {} {//}/$(date +%Y-%m-%dT%H:%M:%S)_{/}.txt

Или:

find /path/to/file -type f ! -name "*.*" -print0 |
  parallel -0 mv {} {//}/$(date +%Y%m%dT%H%M%S)_{/}.txt

Это означает, что вы можете использовать стандартизированный синтаксический анализатор ISO8601 для последующего анализа метки времени.

1
27.01.2020, 21:17

Теги

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