У меня есть каталог с именем «isting_folder »и другой каталог с именем« temp »
Я хочу заменить содержимое «isting_folder» на «temp» вместе с любыми подкаталогами.
Поскольку каталог содержит веб-страницы, это должно быть сделано таким образом, чтобы обеспечить минимальное время простоя.
Есть ли способ сделать это? Какую команду я должен использовать для достижения этой цели?
Если оба orig_folder
и temp
находятся на том же физическом диске, переименовывание (перемещения) их чрезвычайно мгновенно. Это означает, что Вы могли просто сделать
mv orig_folder foo && mv temp orig_folder && rm -rf foo
Это переименует orig_folder
кому: foo
, затем переименуйте temp
кому: orig_folder
и наконец удалите foo
. В той же файловой системе, двух mv
операции возьмут совсем мало времени (0,004 секунды в моей системе).
Если входные и выходные каталоги не находятся в той же файловой системе для уменьшения времени, когда файлы не доступны, необходимо было бы сначала переместить исходный каталог в ту же файловую систему и затем переименовать:
mv /path/to/temp . && mv orig_folder foo && mv temp orig_folder && rm -rf foo
Объединение принятого ответа здесь с командой для копирования одного каталога в другого, ниже команды должно сделать задание:
rm -rfv <existing_folder>/* && cp -r <temp>/* <existing_folder>
, Но, как в ответе в ссылке говорится, отмечают что:
/*
часть очень важна. При помещении пространства перед эти *
оно удалит все файлы в текущем каталоге. rm
, -r
и *
все в той же команде. Они могут быть катастрофической комбинацией". Вы попробовали rsync?
От Ваших требований я думаю, что это - лучший инструмент. Это заменит только файлы, которые изменились, скопируйте новые, и это может удалить тех, которые ушли в источнике.
$ rsync -av --delete temp/ existing_folder/
Уведомление наклонная черта после временного файла, это требуется, потому что Вы хотите синхронизировать содержание. Без него это создало бы временный файл каталога в существующей папке.
удалить аргумент делает файлы, которые больше не находятся во временном файле быть удаленными в existing_folder.
можно также сделать пробный прогон , если Вы добавляете-n аргумент. Это скажет Вам, какие изменения будут сделаны, ничего не делая.