Копируем 6 файлов - получаем 4

Хотите говорить о Far и не знаете, куда обратиться?
Post Reply
User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Копируем 6 файлов - получаем 4

Post by Raistlin » Tue 30 Apr, 2013 23:18

Наткнулся на интересную ситуацию. Копируем в пустой каталог файлы:

Code: Select all

22.05.2010  16:50            16 329 ANGEL-~1.JPG
22.05.2010  16:50            15 085 ANGEL-~2.JPG
22.05.2010  16:50            21 047 ANGEL-~21.jpg
22.05.2010  16:50            12 619 ANGEL-~22.jpg
22.05.2010  16:50            24 221 ANGEL-~3.JPG
22.05.2010  16:50            16 420 ANGEL-~4.JPG
               6 File(s)        105 721 bytes
               0 Dir(s)  549 190 955 008 bytes free
Получаем два запроса о перезаписи существующих файлов и, если соглашаемся, такой набор в целевом каталоге (с выводом коротких имен):

Code: Select all

22.05.2010  16:50            16 329              ANGEL-~1.JPG
22.05.2010  16:50            15 085              ANGEL-~2.JPG
22.05.2010  16:50            24 221 ANGEL-~3.JPG ANGEL-~21.jpg
22.05.2010  16:50            16 420 ANGEL-~4.JPG ANGEL-~22.jpg
               4 File(s)         72 055 bytes
               0 Dir(s)  549 038 665 728 bytes free
Это не совсем баг Far'а, но очевидно чреватая потерей информации ситуация - а ну как я не копировать буду, а перемещать, отметив крыжик "Перезаписывать все", - могу же рассчитывать, что перезаписывать в целевом каталоге нечего, раз он пустой! Причем исходные файлы с короткими именами не только перезаписали файлы в целевом каталоге, но и приобрели при этом длинные имена, вообще у ним отношения не имеющие.
Несколько уменьшить риск можно двумя путями:
1. Перед копированием сортировать файлы в каталоге на длинноименные и короткоименные. Сначала копировать короткоименные, затем длинноименные. Это разрешило бы рассматриваемую ситуацию.
2. Если исходный файл не имеет длинного имени, а целевой с тем же коротким именем - имеет, то прерывать копирование с запросом даже в режиме "Перезаписывать все" - ибо оснований давать добро на такую перезапись быть, вероятно, не может. Еще можно попробовать изменить короткое имя у существующего файла в целевом каталоге, но в общем случае может и не получиться.
Last edited by Raistlin on Wed 01 May, 2013 12:42, edited 2 times in total.
Magically yours
Raistlin


User avatar
DrKnS
Posts: 5437
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 254 times

Re: Копируем 6 файлов - получаем 4

Post by DrKnS » Wed 01 May, 2013 14:31

а ну как я не копировать буду, а перемещать, отметив крыжик "Перезаписывать все", - могу же рассчитывать, что перезаписывать в целевом каталоге нечего, раз он пустой!
Утруждался и ставил крыжик при копировании в заведомо пустую папку? :)
Перед копированием сортировать файлы в каталоге на длинноименные и короткоименные.
Что есть "длинноименные" и "короткоименные"?
исходный файл не имеет длинного имени, а целевой с тем же коротким именем - имеет
Это как? Файл не может не иметь длинного имени.
Еще можно попробовать изменить короткое имя у существующего файла в целевом каталоге, но в общем случае может и не получиться.
Для изменения короткого имени требуются как минимум windows xp, ntfs-том и права администратора.


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

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: Копируем 6 файлов - получаем 4

Post by Raistlin » Wed 01 May, 2013 14:57

Утруждался и ставил крыжик при копировании в заведомо пустую папку? :)
Хорошо, распишу: копируем в папку, где есть как пустые подпапки, так и непустые, но с ненужными, подлежащими перезаписи файлами. Не такой уж и высосанный из пальца пример - я наткнулся на проблему именно на синхронизации двух дисков.
Что есть "длинноименные" и "короткоименные"?
Файл не может не иметь длинного имени.
Подразумеваю под "короткоименными" те файлы, у которых длинное имя совпадает с коротким. У "длинноименных" - не совпадает.
Для изменения короткого имени требуются как минимум windows xp, ntfs-том и права администратора.
Можно и без прав админа: переименовываем "длинноименный" файл в целевом каталоге в короткое имя, гарантированно отсутствующее в целевом каталоге, копируем "короткоименный" из исходного каталога в целевой, потом переименовываем "длинноименный" файл обратно. Но для этого требуется полный доступ к "длинноименному" файлу.
В целом, лучше забить.
Чревато потерей информации. Пусть и раз в пятилетку. По крайней мере, прикрутить предупреждающий диалог (причем без возможности перезаписи, а обязательно прерывающий копирование аварийно), извещающий, что надо сначала вручную разрешить конфликт, а потом повторить операцию, точно лишним не будет.
Magically yours
Raistlin

Post Reply

Return to “Обсуждение Far Manager”