Какие из множества функций копирования файлов Python безопасны, если копирование прервано?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Какие из множества функций копирования файлов Python безопасны, если копирование прервано?

Сообщение Anonymous »

Как показано в разделе «Как скопировать файл в Python?», существует множество функций копирования файлов: Какой из всех этих методов является безопасным в случае прерывания копирования (пример: убить процесс Python)? Последний в списке выглядит нормально.
Под безопасным я имею в виду: если копия файла размером 1 ГБ не завершена на 100 % (скажем, она прервана в середине копирования, после 400 МБ) ), размер файла не должен сообщаться как 1 ГБ в файловой системе, он должен:
  • либо сообщать размер файла когда последние байты были записаны (например, 400 МБ)
  • или будут удалены
Хуже всего было бы, если бы последний Размер файла записывается первым (внутренне с помощью Fallocate или ftruncate?). Это может стать проблемой, если копирование будет прервано: глядя на размер файла, мы можем подумать, что файл записан правильно.
Многие программы инкрементального резервного копирования (я пишу одну) используйте «имя_файла+mtime+fsize», чтобы проверить, нужно ли копировать файл или он уже существует (конечно, лучшим решением является использование исходных и целевых файлов SHA256, но это не делается для каждой синхронизации, это отнимает слишком много времени; здесь не по теме).
Поэтому я хочу убедиться, что функция «копировать файл» не сохраняет сразу окончательный размер файла (тогда она может обмануть сравнение fsize ), прежде чем копировать фактическое содержимое файла.

Примечание. Я задаю этот вопрос, потому что, хотя Shutil.filecopy был довольно простым Python 3.7 и ниже, см. исходный код (это более или менее наивный метод, описанный выше), на Python 3.9 он кажется гораздо более сложным, см. исходный код, со множеством различных случаев для Windows, Linux, MacOS, приемов «быстрого копирования» и т. д. < /п>

Подробнее здесь: https://stackoverflow.com/questions/652 ... copy-is-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»