использование команды CP без целевого операнда на большом каталоге не дает ошибку и израсходовало дисковое пространство

Бит странного здесь

Я пытался скопировать данные от одного каталога до другого и бросил целевой операнд от CP. Команда See

root@server:/home/pp/test1# cp -r ../dhcppc0/*

Команда работала больше часа, поскольку исходный каталог содержал более чем 135 ГБ данных и много каталогов.

Я контролировал это и наблюдал, что доступный диск в системе понизился, и оставил его в течение ночи. Утром я отметил, что сессия к серверу испытала таймаут, видел, что доступное дисковое пространство понизилось далее, но файлы/каталоги не были скопированы.

На более близком контроле я видел свою команду CP и заметил, что забыл помещать a'.' как второй операнд для направления копии к моему текущему каталогу, и это НЕ дало ошибку?

Таким образом, мой вопрос, какой и куда все дисковое пространство уводят? и как я возвращаю его? есть ли некоторое временное пространство буфера где-нибудь в системе, которую я могу очистить?

Исходный каталог содержит данные приблизительно на 135 ГБ приблизительно в 1M файлы.

Любая справка значительно ценилась бы!

2
задан 30 October 2014 в 12:37

1 ответ

На более близком контроле я видел свою команду CP и заметил, что забыл помещать a'.' как второй операнд для направления копии к моему текущему каталогу, и это НЕ дало ошибку?

Почему должен он? В cp -r ../dhcppc0/*, cp не обрабатывает ../dhcppc0/*. Оболочка расширяется ../dhcppc0/*, и затем передает расширенное содержание cp. Таким образом, если это расширилось в ../dhcppc0/bar, ../dhcppc0/baz, и ../dhcppc0/foo, затем расширенная команда была бы:

cp -r ../dhcppc0/bar ../dhcppc0/baz ../dhcppc0/foo

И если foo каталог, cp счастливо скопирует все содержание других каталогов к foo.

[W] шляпа и куда все дисковое пространство уводят? и как я возвращаю его? есть ли некоторое временное пространство буфера где-нибудь в системе, которую я могу очистить?

Сделать echo ../dhcppc0/*, посмотрите на фамилию, которая подходит, и осмотрите тот каталог.

Поэтому при копировании каталогов или использовании подстановочных знаков, всегда используйте -t парамать:

cp -t . ../dhcppc0/*
# or cp --target-directory . ../dhcppc0/*

И обратите внимание, что Вы пропустите любые точечные папки и точечные файлы, если Вы будете использовать *. Вы не должны использовать его, настолько лучше, чтобы просто сделать:

cp -t . ../dhcppc0/
1
ответ дан 2 December 2019 в 05:10

Другие вопросы по тегам:

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