Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Фоновое копирование командой cp  (Прочитано 1522 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн mastergig

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Фоновое копирование командой cp
« : 15 Декабря 2019, 09:27:29 »
Уважаемые гуру, помогите пожалуйста новичку )

Ubuntu 16.04.6 LTS.
Кроном запускается sh-скриптик, копирующий файлик на яндекс-диск. Яндекс-диск подключается с помощью davfs2.

mount /mnt/yadisk
SECONDS=0
cp backup.tar.gz /mnt/yadisk
echo "Время выполнения: $SECONDS сек."
umount /mnt/yadisk

Проблема в том, что команда "cp" выполняется как-будто где-то в фоне. То есть скрипт не останавливается до окончания копирования, а практически мгновенно идет дальше. Время выполнения выходит как правило 1 сек. Но при этом команда umount выдает ошибку "umount: /mnt/yadisk: target is busy". А сам файл в яндекс-диске появляется значительно позже.

Так вот собственно вопрос: можно ли "затормозить" скрипт до окончания копирования?

ТС не появлялся на Форуме более трех месяцев по состоянию на 03/05/2020 (последняя явка: 15/12/2019). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 03 Мая 2020, 05:25:22 от zg_nico »

Оффлайн damix

  • Активист
  • *
  • Сообщений: 664
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #1 : 15 Декабря 2019, 10:09:33 »
Оно не в фоне выполняется, скрипт и так выполняется последовательно. Просто файл же в кэш попадает, и если файл маленький, то он весь туда и помещается. А физически он закончит передаваться по сети уже позже, и пока он будет передаваться, отмонтировать файловую систему будет нельзя.
Попробуйте сразу после cp backup.tar.gz /mnt/yadisk сделать ls -l /mnt/yadiskЕсли покажет файл, значит все работает как и должно.
А если надо сразу после копирования отмонтировать яндекс диск, то можно
cp backup.tar.gz /mnt/yadisk
sync
umount /mnt/yadisk
С обычными файловыми системами работает, с webdav не знаю. И webdav - медленная штука.
А вообще непонятно, зачем сразу отмонтировать диск, пусть бы он и был, есть пить не просит.
« Последнее редактирование: 15 Декабря 2019, 10:11:38 от damix »

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #2 : 15 Декабря 2019, 10:15:35 »
А если так:

SECONDS=0
mount /mnt/yadisk
cp backup.tar.gz /mnt/yadisk && echo "Время выполнения: $SECONDS сек" && umount /mnt/yadisk

Оффлайн mastergig

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #3 : 15 Декабря 2019, 10:35:29 »
А если надо сразу после копирования отмонтировать яндекс диск, то можно
cp backup.tar.gz /mnt/yadisk
sync
umount /mnt/yadisk
С обычными файловыми системами работает, с webdav не знаю. И webdav - медленная штука.
А вообще непонятно, зачем сразу отмонтировать диск, пусть бы он и был, есть пить не просит.

Спасибо! Но sync не помог... Так же "0 секунд", а файла долго-долго нет.

Отмонтировать диск, в принципе, действительно не обязательно. Но в первую очередь хотелось понять почему оно не работает ) К тому же в моём случае полезным было бы видеть реальное время копирования на яндекс-диск... Файл 60 мегабайт, а копируется, судя по-всему, несколько часов.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #4 : 15 Декабря 2019, 11:59:45 »
mastergig,
А если из терминала cp выполнить, тоже копируется "практически мгновенно" ?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #5 : 15 Декабря 2019, 13:36:06 »
Файл 60 мегабайт, а копируется, судя по-всему, несколько часов.
где-то с ноября у яндекса отвратительно работает webdav. Большие файлы могут и вовсе не скопироваться.


 

Пользователь добавил сообщение 15 Декабря 2019, 13:39:10:
советую глянуть в строну rclone - наиудобнейшая штукенция для работы с облаками   ;)
« Последнее редактирование: 15 Декабря 2019, 13:39:10 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: Фоновое копирование командой cp
« Ответ #6 : 16 Декабря 2019, 01:24:47 »
Но в первую очередь хотелось понять почему оно не работает )

Когда смонтирован WebDAV сервер с помощью davfs2, то реально файлы сразу не передаются по сети, а в начале помещаются в кэш (каталог "/var/cache/davfs2" или "~/.davfs2/cache"). Поэтому команда cp отрабатывает практически мгновенно, если не большой файл.

После этого davfs2 начинает загрузку файла на сервер WebDAV и пока его полностью не загрузит точку монтирование буде занята (target is busy).

Пользователь добавил сообщение 16 Декабря 2019, 01:34:31:
Файл 60 мегабайт, а копируется, судя по-всему, несколько часов.
Проблема может быть с сетью или с сервисом WebDAV.

А ещё проверьте в конфигурационных файлах "/etc/davfs2/davfs2.conf" и "~/.davfs2/davfs2.conf" параметр delay_upload, который отвечает за задержку перед началом загрузки на сервер закрытого файла. Если параметра нет, то используется значение по умолчанию - 10 секунд. Возможно у Вас установлено большое значение задержки.
« Последнее редактирование: 16 Декабря 2019, 01:34:31 от valrust »

 

Страница сгенерирована за 0.053 секунд. Запросов: 23.