Как восстановить каталог, перезаписанный с помощью mv?

Если /var/log/http/access.logбольше, чем оперативная память и, следовательно, не может быть кэшировано, запуск большего количества параллельных процессов может быть хорошей альтернативой многократному чтению access.log-, особенно если у вас несколько ядер. Это будет запускать один grepдля каждого IP параллельно (+ пару вспомогательных процессов-оберток ).

pargrep() {
    # Send standard input to grep with different match strings in parallel
    # This command would be enough if you only have 250 match strings
    parallel --pipe --tee grep ^{} '>' /tmp/access-{}.log ::: "$@"
}
export -f pargrep
# Standard input is tee'ed to several pargreps.
# Each pargrep gets 250 match strings and thus starts 250 processes.
# For 1200 ips this starts 3600 processes taking around 1 GB RAM,
# but it reads access.log only once
cat /var/log/http/access.log |
  parallel --pipe --tee -N250 pargrep {} :::: ips
0
21.02.2020, 00:24
3 ответа
mv evaluateA2P/ action2pose_bk/ evaluateA2P/

Результатом этой команды будет перемещение каталога action2pose_bkв каталог evaluateA2P. Чтобы отменить это, просто переместите его назад, запустив:

mv action2pose_bk/evaluateA2P.
1
28.04.2021, 23:22

Попробуйте это,

mv test1/test2. && mv test1 test2
1
28.04.2021, 23:22

Как и в вашей демонстрации, вот что я получаю, когда пробую ваш реальный сценарий:

mv evaluateA2P/ action2pose_bk/ evaluateA2P/
mv: cannot move 'evaluateA2P/' to a subdirectory of itself, 'evaluateA2P/evaluateA2P'

Ваша команда не была успешно завершена. Что он сделал, так это переместил action2pose_bkв evaluateA2P, так что просто переместите его снова

mv evaluateA2P/action2pose_bk.

Или, с вашим демо,

mv test1/test2.

В этот момент вы можете еще раз попробовать свою предполагаемую команду. Обратите внимание, однако, что это удастся, только если целевой каталог action2post_bk/evaluateA2Pлибо пуст, либо еще не существует :

.
mv evaluateA2P/ action2pose_bk/evaluateA2P/
0
28.04.2021, 23:22

Теги

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