А что tcopy не копирует файлы более 2 Gb ?, Im27th, 21-Янв-10, 18:13 [смотреть все]В общем сейчас начальник озадачил, что не смоглося у него вчера скопировать с ленты файл размером гигабайт в 10. Говорит, что доходит до 2 Gb и всё. Причём последний блок, запись которого превысит переписываемый файл в 2 Gb, разрывает, и дописывает к файлу кусок блока до 2 Gb, а оставшийся кусок выкидывает.Сам я не пробовал - завтра попробую попробовать - но в начальнику верю. Пошарился в интернете сейчас - ничего интересного не нашёл. И вообще не помню, чтобы у меня такие проблемы возникали, может просто не встречались большие файлы? В общем озадачил он меня поискать может какая-то новая версия tcopy есть, либо достать исходник его, он отдаст программистам - может они найдут куда там возможность копирования lagrefile дописать. Я не знаю на чём он пробовал, либо RedHat, либо Solaris, а я завтра на Solaris 8 буду пробовать. А сейчас просто теоретичеcки хочу поинтересоваться, чтобы завтра подготовленным быть, если реально такая проблема существует.
|
- А что tcopy не копирует файлы более 2 Gb ?, lavr, 20:55 , 21-Янв-10 (1)
- А что tcopy не копирует файлы более 2 Gb ?, Im27th, 11:01 , 26-Янв-10 (2)
В общем, поскольку не программирую уже больше 10 лет, трудно понять что именно надобно сотворить. В исходнике tcopy http://src.opensolaris.org/source/xref/netvirt/usr/src/cmd/t... нет тех функций, к примеру D_FILE_OFFSET_BITS, которые требуют отредактировать в этих документах http://www.gnu.org/software/coreutils/faq/coreutils-faq.html... http://www.sun.com/software/whitepapers/wp-largefiles/largef...И вообще не смотря на то, что проблема типа стара, я не нашёл ни в одном форуме или блоге, чтобы хоть кто-то описывал, что решил эту проблему. Я думаю за эти годы уже саму tcopy можно было переделать 300 раз. В общем-то хочется понять что же требуется? - либо отредактировать функции как для 64-разрядной системы, но ссылки оставить на 32-разрядные библиотеки; - либо наоборот отредактировать оставить функции, но ссылки сделать на 64-разрядные библиотеки и установить эти бибилиотеки; Потому что если редактировать всё, то не проще ли взять и скопировать tcopy из 64-разрядной системы? Заранее благодарен! Пните в нужном направлении, а то ваще туплю.
- А что tcopy не копирует файлы более 2 Gb ?, Aquarius, 14:20 , 26-Янв-10 (3)
- А что tcopy не копирует файлы более 2 Gb ?, Im27th, 15:03 , 26-Янв-10 (5)
>>Пните в нужном направлении, а то ваще туплю. >гугл? Это послание говорит только о том, что Вы не разбираетесь в вопросе и сказать Вам нечего. Ну так и молчали бы и не позорились, сидели в ветке флейма. Я написал: "И вообще не смотря на то, что проблема типа стара, я не нашёл ни в одном форуме или блоге, чтобы хоть кто-то описывал, что решил эту проблему." Это означает, что я уже перерыл всё, что мог. То, что осталось не перерытым, видимо за гранью моего понимания как составить запрос.
- А что tcopy не копирует файлы более 2 Gb ?, lavr, 14:51 , 26-Янв-10 (4)
- А что tcopy не копирует файлы более 2 Gb ?, Im27th, 15:20 , 15-Фев-10 (6)
Да, всё получилось!В исходнике поменял в двух местах open() на open64() и откомпилировал: gcc -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 tcopy2.c -o tcopy2 И на CentOS 5.2. и на Solaris 8 всё откомпилировалось без ошибок. Но долго не удавалось проверить - не было доступа к ленточным устройствам. Сегодня получил доступ на Solaris 8 и удалось скопировать с ленты на диск 10-гигабайтный файл. Правда он всё равно что-то в конце гадостливое сказал на прощание: file 1: records 223462 to 223463: size 512 file 1: records 223464 to 223523: size 64512 file 1: record 223524: size 52992 file 1: record 223525: size 4 file 1: record 223526: size 512 file 1: records 223527 to 223529: size 64512 file 1: record 223530: size 49824 file 1: record 223531: size 4 file 1: records 223532 to 223635: size 512 file 1: eof after 223635 records: 10195176924 bytes Write EOF: Inappropriate ioctl for device
|