service (ftp) => вы можете увидеть имя службы в файле c: / services, пожалуйста, проверьте
{
port = 21
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/ftpd
instances = 20
}
mv statistics backup-xx && mkdir statistics
Это переименует существующий каталог statistics
в backup-xx
, и если это удастся, будет продолжено создание нового statistics. Каталог
.
Для более атомарной операции рассмотрите возможность создания каталога statistics-001
(или аналогичного, возможно, заменив 001
сегодняшней датой в подходящем формате) и символической ссылки на он называется statistics
:
mkdir statistics-001
ln -s statistics-001 statistics
Если вы хотите «повернуть» это так, чтобы новые данные попадали в чистый каталог, сначала создайте каталог, а затем воссоздайте ссылку statistics
на него:
mkdir statistics-002
ln -sf statistics-002 statistics
mv statistics-001 backup-001
Таким образом, любая программа, пишущая в каталог statistics
(т.е. в каталог, на который указывает эта символическая ссылка), всегда1 не найдет его.
Если вам нужны специальные разрешения или права собственности для каталога, на который указывает статистика
, установите их перед (повторным) созданием ссылки.
1 Вернее, таким образом, время, в течение которого программа будет без действительного целевого каталога, сводится к минимуму, насколько это практически возможно, с использованием стандартных инструментов Unix.
Невозможно атомарно заменить каталог другим каталогом. Вы можете переместить старый каталог, а затем создать новый:
mv statistics backup-xx
mkdir statistics
Но это оставляет небольшой промежуток времени, в течение которого статистики
не существует. Это проблема, если какой-то процесс может удалить файлы в каталоге в любое время.
Для эффективной атомарной замены каталога вам необходимо использовать символические ссылки. Создайте каталог, имя которого включает период времени с самого начала:
mkdir "statistics-$(date +%Y%m%d)"
(или любое другое соглашение об именовании каталогов, которое вы хотите выбрать). Создайте символическую ссылку с фиксированным именем на текущее местоположение:
ln -s … statistics
Чтобы заменить каталог, сначала создайте новый каталог и новую символическую ссылку, а затем переместите ее, чтобы перезаписать старую символическую ссылку. Обратите внимание, что ни простой mv
в символической ссылке, ни простой ln -s
этого не сделают: они создадут запись внутри целевого каталога. GNU coreutils ln -snf
также не подходит, потому что он удаляет существующую символическую ссылку перед созданием новой, что оставляет небольшое временное окно, в течение которого путь не существует. Вы можете использовать GNU coreutils mv -T
для новой символической ссылки.
new_dir="statistics-$(date +%Y%m%d)"
mkdir "$new_dir"
ln -s statistics.new
mv -Tf statistics.new statistics
Вы можете переместить содержимое папки статистики во вновь созданный каталог, а не перемещать саму папку. Если вы переместите всю папку, вам придется запустить другую команду, чтобы изменить права доступа к каталогу.
mkdir -p <path>/backup-xxx
mv statistics/* <path>/backup-xxx/.
Не переименовывайте каталог вообще. Вы сказали, что предпочитаете переименовывать каталог, потому что в нем много файлов. Единственная причина, по которой я могу думать, что вам это может понадобиться, заключается в том, что копирование файлов займет слишком много времени. Однако перемещение (т. е. переименование) файлов происходит мгновенно, если они перемещаются в место в той же файловой системе. Я предполагаю, что это то, что вы должны делать, поскольку, если вы меняете файловые системы, mv
займет столько же времени, сколько cp
независимо от того, перемещается ли каталог или его содержимое.
Итак, просто сделайте:
mkdir backup-xx && mv statistics/* backup-xx
Если вам нужно также получить скрытые файлы, вы можете сделать:
mkdir backup-xx && mv statistics/* statistics/.* backup-xx
Или, если вы используете bash
:
shopt -s dotglob; mkdir backup-xx && mv statistics/* statistics/.* backup-xx
Таким образом, каталог всегда будет там но вы по-прежнему перемещаете его содержимое простой и быстрой операцией.