Видео смотреть бесплатно

Смотреть вк видео

Официальный сайт openclass 24/7/365

Смотреть видео бесплатно

23.04.2009 22:45

kampfusbekeПишем большие файлы на UDF

Многие (знакомые со старой проблемой с UDF) думают, что под Линуксом на UDF нельзя писать файлы размером более 4ГБ или даже 1ГБ. Во времена HD-рипов это не очень-то и приятно... Но на самом деле, это давно уже не так ;) Нам нужны: пакет udftools и загруженые модули udf и loop. Я написал скриптик, который автоматически создает и маунтит образ UDF нужного размера (DVD+9 и DVD-9, как и DVD+5 и DVD-5 на самом деле слегка различаются в размере!), остается только записать на него нужные файлы и прожечь сам образ.



  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
UDFPATH=$HOME

yesorno=blah

type=blah

echo -e "By default the udf image will be placed into your home directory. \n Do you want to enter an alternative one? (Enter y or n)"

while < $yesorno != y -a $yesorno != n >; do

read yesorno

if < $yesorno != y -a $yesorno != n >; then

echo "Wrong entry, please enter 'y' or 'n'"

fi

done



if < $yesorno == y >; then

echo "Please enter the directory you want to use: "

read UDFPATH

if < -d $UDFPATH >; then

echo "Using $UDFPATH"

else

echo "Creating $UDFPATH" && mkdir -v $UDFPATH

fi

fi

if < $yesorno == n >; then

echo "Using default directory"

fi



if < -e $UDFPATH/udf.iso >; then

mv $UDFPATH/udf.iso $UDFPATH/udf.iso.bak-`date +%y.%m.%d-%H.%M` && echo "udf.iso already exists! Backing up..."

fi



echo -e "Please enter your type of disk: dvd5p, dvd5m, dvd9p or dvd9m:\n(5/9 stand for normal/double layer disk and p/m for +/-)"

while < $type != dvd5p -a $type != dvd5m -a $type != dvd9p -a $type != dvd9m >; do

read type

if < $type != dvd5p -a $type != dvd5m -a $type != dvd9p -a $type != dvd9m >; then

echo "Wrong entry, please enter one of types from above"

fi

done



if < $type == dvd5p >; then

echo "Creating a 4,7 GB DVD+R image..."

dd if=/dev/zero of=$UDFPATH/udf.iso bs=1024 count=4590208

fi

if < $type == dvd5m >; then

echo "Creating a 4,7 GB DVD-R image..."

dd if=/dev/zero of=$UDFPATH/udf.iso bs=1024 count=4596992

fi

if < $type == dvd9p >; then

echo "Creating a 8,5 GB DVD+R image..."

dd if=/dev/zero of=$UDFPATH/udf.iso bs=1024 count=8347648

fi

if < $type == dvd9m >; then

echo "Creating a 8,5 GB DVD-R image..."

dd if=/dev/zero of=$UDFPATH/udf.iso bs=1024 count=8343424

fi



mkudffs $UDFPATH/udf.iso

echo -e "UDF image created in $UDFPATH/udf.iso. Want to mount it right now? (Make sure udf and loop modules are loaded)"



yesorno=blah

while < $yesorno != y -a $yesorno != n >; do

read yesorno

if < $yesorno != y -a $yesorno != n >; then

echo "Wrong entry, please enter 'y' or 'n'"

fi

done

if < $yesorno == y >; then

echo "Please enter the directory you want to use for mounting: "

read MOUNTPATH

if < $UDFPATH = $MOUNTPATH >; then

echo "You can't mount the image to the directory it exists in!" && exit 0

echo -e " Mount it yourself with 'sudo mount -o loop,user,uid=`id -u` -t udf $UDFPATH/udf.iso targetdir\&#39;"

echo " Afterwards copy your files, unmount the image and burn the dvd."

echo -e " For burning you may just use 'cdrecord -eject -dao -dev=/dev/sr0 $UDFPATH/udf.iso'\n (the path to your DVD burner may vary!)"

fi

if < -d $MOUNTPATH >; then

echo "Using $MOUNTPATH"

USERID=`id -u`

sudo mount -o loop,user,uid=$USERID -t udf $UDFPATH/udf.iso $MOUNTPATH

echo "Copy your files, umount the image and burn the dvd."

echo -e "For burning you may just use 'cdrecord -eject -dao -dev=/dev/sr0 $UDFPATH/udf.iso'\n(the path to your DVD burner may also vary)";

else

echo "Creating $MOUNTPATH..." && mkdir -v $MOUNTPATH

USERID=`id -u`

sudo mount -o loop,user,uid=$USERID -t udf $UDFPATH/udf.iso $MOUNTPATH

echo "Copy your files, umount the image and burn the dvd."

echo -e "For burning you may just use 'cdrecord -eject -dao -dev=/dev/sr0 $UDFPATH/udf.iso'\n(the path to your DVD burner may also vary)";

fi

fi

if < $yesorno == n >; then

echo -e "All right, then mount it yourself with 'sudo mount -o loop,user,uid=`id -u` -t udf $UDFPATH/udf.iso targetdir'\nAfterwards copy your files, unmount the image and burn the dvd."

echo -e "For burning you may just use 'cdrecord -eject -dao -dev=/dev/sr0 $UDFPATH/udf.iso'\n(the path to your DVD burner may also vary)"

fi



Записываем этот скриптик в /usr/local/bin/makeudf (или как захотите) и делаем ему chmod +x. После чего просто запускаем его из терминала и следуем указаниям ;) Если у кого-нибудь есть дельные советы по улучшению скрипта - добро пожаловать в комментарии :)



EDIT: кстати, спасибо grigio за его решение этой проблемы, которое и сподвигло меня на написание этого скрипта.

EDIT2: кстати, cdrecord выдает при записи этих исошников кучу ошибок, не обращайте на это внимания! Записаные болванки без проблем и полностью читаются как в Линуксе, так и в Винде!

EDIT3: теперь скрипт "переспрашивает" при неверном вводе переменной


Тэги: bash UDF скрипт
+ 6 -
Похожие Поделиться

kampfusbeke 23.04.2009 22:50 #
+ 0 -
интересно, а почему после 81 строчки не нумеруются?
xT 23.04.2009 23:16 #
+ 4 -
Плюсанул.
Перепишите скрипт так чтобы при некорректных ответах (не y или не n) он не завершался, а пользователю предлагалось ввести ответ еще раз. Циклы мб... а то не совсем тру выходит =)
kampfusbeke 23.04.2009 23:28 #
+ 1 -
да, я тоже вот это подумал... надо бы переделать это в do-while, когда время будет :)
kampfusbeke 23.04.2009 23:41 #
+ 0 -
или, собственно, можешь подсказать что-нибудь лучше do-while? я в скриптинге пока еще новичек ;)
xT 23.04.2009 23:45 #
+ 3 -
dialog ? =)
kampfusbeke 24.04.2009 01:37 #
+ 1 -
так, это сделали. следущая проблема - хочу, чтобы проверялось, существует ли каталог, можно ли туда писать, пустой ли он (это для монтирования). если он не пустой - чтобы так-же и создавался. как все это решить по-отдельности - раскурил, но чтобы все вместе, в одном цикле и по-элегантнее - пока не вкуриваю...
zivot_je_cudo 24.04.2009 13:06 #
+ 1 -
< -e $dir -a -d $dir -a -w $dir -a -x $dir > || echo "Каталог не верен";
< -z `ls $dir` > && echo "Каталог пуст" || echo "Каталог не пуст";
Вместе в одном цикле элегантно не будет. Так не получится возвращать ошибку, описывающую, что именно не так с каталогом. Лучше подробнее:
< -e $dir > || echo "Каталог не существует";
< -d $dir > || echo "Это не каталог";
< -w $dir > || echo "Запись в каталог не доступна";
< -x $dir > || echo "Нет прав на просмотр каталога";
< -z `ls $dir` > || echo "Каталог не пуст";
Что значит "если он не пустой - чтобы так-же и создавался"?
kampfusbeke 24.04.2009 14:48 #
+ 1 -
проглючило :) в смысле, если он не существует, чтобы он создался. как это все по-отдельности решить, я уже разобрался, но надо будет подумать, как всю проблему решить по-элегантнее ;)
буду думать поздно вечером опять ;)
zivot_je_cudo 24.04.2009 16:55 #
+ 0 -
И у меня вновь не совсем элегантное решение..)
< -e $dir > || (mkdir $dir || echo "Не могу создать каталог");
zivot_je_cudo 24.04.2009 09:46 #
+ 1 -
Все совсем давно не так о.о Скрипт для консоли, конечно, хорош, но k3b позволяет писать UDF без ограничения в 4гб.
kampfusbeke 24.04.2009 14:43 #
+ 0 -
совсем давно - это когда? в к3б под кде4 - может быть, не проверял.
в к3б под кде3 была функция записи в удф, но на деле с большими файлами ничего не выходило.
nvbn 24.04.2009 15:32 #
+ -2 -
Я буду ответственно относиться к безопасности своих приложений.
stanislav 24.04.2009 17:01 #
+ 2 -
Хмм.. лежит стопочка дисков с hd-рипами, записанными в k3b. Ни одной болванки не закосячило.
stanislav 24.04.2009 17:02 #
+ 1 -
k3b из третьих кед, имел ввиду.
kampfusbeke 24.04.2009 17:10 #
+ 0 -
какая версия к3б?
хд-рипы, я так понимаю, больше 4-х гиг и записаны на юдф?
stanislav 24.04.2009 17:17 #
+ 1 -
1.0.5
больше 4-х гиг
а как бы посмотреть уже записанные диски - udf или нет? чтобы уж точно, а не по памяти.
kampfusbeke 24.04.2009 22:04 #
+ 0 -
ну, если файлы больше 4г, то должно быть удф. стандартные исо9660 так не могут ;)
а вообще, крусэйдер показывает, например, там-же где показывается свободное место. lesspipe кроме всего прочего это тоже показывает (less /dev/sr0).
если стоит lshw, можно сделать lshw |grep medium -A 4
stanislav 25.04.2009 05:28 #
+ 0 -
Проверил - да, udf.
Kraplax 24.04.2009 17:24 #
+ 0 -
viva la KDE4! :D

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн