@@ -70,87 +70,87 @@ const mode_t outmode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
70
70
71
71
void show_help ( const int cluster, const int hardbs )
72
72
{
73
- std::printf ( " %s - Data recovery tool .\n " , Program_name );
74
- std::printf ( " Copies data from one file or block device to another ,\n "
75
- " trying to rescue the good parts first in case of read errors .\n "
76
- " \n Usage : %s [options] infile outfile [mapfile]\n " , invocation_name );
77
- std::printf ( " \n Always use a mapfile unless you know you won't need it. Without a \n "
78
- " mapfile , ddrescue can't resume a rescue, only reinitiate it .\n "
79
- " NOTE: In versions of ddrescue prior to 1.20 the mapfile was called \n "
80
- " 'logfile'. The format is the same; only the name has changed .\n "
81
- " \n If you reboot, check the device names before restarting ddrescue.\n "
82
- " Don't use options '-F' or '-G' without reading the manual first .\n "
83
- " \n Options :\n "
84
- " -h, --help display this help and exit \n "
85
- " -V, --version output version information and exit \n "
86
- " -a, --min-read-rate=<bytes> minimum read rate of good areas in bytes/s \n "
87
- " -A, --try-again mark non-trimmed, non-scraped as non-tried \n "
88
- " -b, --sector-size=<bytes> sector size of input device [default %d]\n " , hardbs );
89
- std::printf ( " -B, --binary-prefixes show binary multipliers in numbers [SI]\n "
90
- " -c, --cluster-size=<sectors> sectors to copy at a time [%d]\n " , cluster );
91
- std::printf ( " -C, --complete-only don't read new data beyond mapfile limits \n "
92
- " -d, --idirect use direct disc access for input file \n "
93
- " -D, --odirect use direct disc access for output file \n "
94
- " -e, --max-bad-areas=[+]<n> maximum number of [new] bad areas allowed \n "
95
- " -E, --max-error-rate=<bytes> maximum allowed rate of read errors per second \n "
96
- " -f, --force overwrite output device or partition \n "
97
- " -F, --fill-mode=<types> fill blocks of given types with data (?*/-+l)\n "
98
- " -G, --generate-mode generate approximate mapfile from partial copy \n "
99
- " -H, --test-mode=<file> set map of good/bad blocks from given mapfile \n "
100
- " -i, --input-position=<bytes> starting position of domain in input file [0]\n "
101
- " -I, --verify-input-size verify input file size with size in mapfile\n "
102
- " -J, --verify-on-error reread latest good sector after every error \n "
103
- " -K, --skip-size=[<i>][,<max>] initial,maximum size to skip on read error \n "
104
- " -L, --loose-domain accept an incomplete domain mapfile \n "
105
- " -m, --domain-mapfile=<file> restrict domain to finished blocks in <file >\n "
106
- " -M, --retrim mark all failed blocks as non-trimmed \n "
107
- " -n, --no-scrape skip the scraping phase \n "
108
- " -N, --no-trim skip the trimming phase \n "
109
- " -o, --output-position=<bytes> starting position in output file [ipos]\n "
110
- " -O, --reopen-on-error reopen input file after every read error \n "
111
- " -p, --preallocate preallocate space on disc for output file \n "
112
- " -P, --data-preview[=<lines>] show some lines of the latest data read [3]\n "
113
- " -q, --quiet suppress all messages \n "
114
- " -r, --retry-passes=<n> exit after <n> retry passes (-1=infinity ) [0]\n "
115
- " -R, --reverse reverse the direction of all passes \n "
116
- " -s, --size=<bytes> maximum size of input data to be copied \n "
117
- " -S, --sparse use sparse writes for output file \n "
118
- " -t, --truncate truncate output file to zero size \n "
119
- " -T, --timeout=<interval> maximum time since last successful read \n "
120
- " -u, --unidirectional run all passes in the same direction \n "
121
- " -v, --verbose be verbose (a 2nd -v gives more )\n "
122
- " -w, --ignore-write-errors make fill mode ignore write errors \n "
123
- " -x, --extend-outfile=<bytes> extend outfile size to be at least this long \n "
124
- " -X, --max-read-errors=<n> maximum number of read errors allowed \n "
125
- " -y, --synchronous use synchronous writes for output file \n "
126
- " -Z, --max-read-rate=<bytes> maximum read rate in bytes/s \n "
127
- " --ask ask for confirmation before starting the copy \n "
128
- " --cpass=<n>[,<n>] select what copying pass(es) to run \n "
129
- " --delay-slow=<interval> initial delay before checking slow reads [30]\n "
130
- " --log-events=<file> log significant events in <file >\n "
131
- " --log-rates=<file> log rates and error sizes in <file >\n "
132
- " --log-reads=<file> log all read operations in <file >\n "
133
- " --mapfile-interval=[i][,i] save/sync mapfile at given interval [auto ]\n "
134
- " --max-slow-reads=<n> maximum number of slow reads allowed \n "
135
- " --pause-on-error=<interval> time to wait after each read error [0]\n "
136
- " --pause-on-pass=<interval> time to wait between passes [0]\n "
137
- " --reset-slow reset slow reads if rate rises above min\n "
138
- " --same-file allow infile and outfile to be the same file \n "
139
- " Numbers may be in decimal, hexadecimal or octal, and may be followed by a \n "
140
- " multiplier : s = sectors , k = 1000, Ki = 1024, M = 10^ 6, Mi = 2^20, etc... \n "
141
- " Time intervals have the format 1 [.5][smhd] or 1/2[smhd].\n "
142
- " \n Exit status : 0 for a normal exit , 1 for environmental problems (file \n "
143
- " not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or \n "
144
- " invalid input file, 3 for an internal consistency error (eg, bug) which \n "
145
- " caused ddrescue to panic. \n "
146
- " \n Report bugs to [email protected] \n "
147
- " Ddrescue home page : http://www.gnu.org/software/ddrescue/ddrescue.html\n "
148
- " General help using GNU software : http://www.gnu.org/gethelp\n " );
73
+ std::printf ( " %s - Инструмент восстановления данных .\n " , Program_name );
74
+ std::printf ( " Копирует данные из одного файла или блочного устройства в другое ,\n "
75
+ " сначала попытаться спасти хорошие части в случае ошибок чтения .\n "
76
+ " \n Использование : %s [опции] файл-источник файл-приемник [mapfile]\n " , invocation_name );
77
+ std::printf ( " \n Всегда используйте файле проекта, если вы не знаете, что вы не будете нуждаться в этом. Без \n "
78
+ " него , ddrescue не может возобновить спасение, только возобновить его .\n "
79
+ " ПРИМЕЧАНИЕ. В версиях ddrescue до 1.20 был вызван файл карты \n "
80
+ " 'logfile'. Формат тот же; только имя изменилось .\n "
81
+ " \n Если вы перезагрузитесь, проверьте имена устройств перед рестартом ddrescue.\n "
82
+ " Не используйте опции '-F' or '-G' не прочитав сначала руководства .\n "
83
+ " \n Опции :\n "
84
+ " -h, --help вывести помощь и выйти \n "
85
+ " -V, --version вывести информацию о версии и выйти \n "
86
+ " -a, --min-read-rate=<bytes> минимальная скорость чтения хороших областей в байтах в секунду \n "
87
+ " -A, --try-again маркировать без обрезки, без царапин, как не проверенные \n "
88
+ " -b, --sector-size=<bytes> размер сектора устройства ввода [по умолчанию %d]\n " , hardbs );
89
+ std::printf ( " -B, --binary-prefixes показать бинарные множители в числах [SI]\n "
90
+ " -c, --cluster-size=<sectors> количество одновременно копируемых секторов [%d]\n " , cluster );
91
+ std::printf ( " -C, --complete-only не читать новые данные за пределами ограничений файлового поля \n "
92
+ " -d, --idirect использовать прямой доступ к диску для входного файла \n "
93
+ " -D, --odirect использовать прямой доступ к диску для выходного файла \n "
94
+ " -e, --max-bad-areas=[+]<n> максимальное допустимое количество [новых] \n "
95
+ " -E, --max-error-rate=<bytes> максимально допустимая скорость чтения ошибок в секунду \n "
96
+ " -f, --force перезаписать выходное устройство или раздел \n "
97
+ " -F, --fill-mode=<types> заполнять блоки данных типов данными (?*/-+l)\n "
98
+ " -G, --generate-mode генерировать приблизительный файл карты из частичной копии \n "
99
+ " -H, --test-mode=<file> установить карту хороших / плохих блоков из заданного файла карты \n "
100
+ " -i, --input-position=<bytes> начальная позиция домена во входном файле [0]\n "
101
+ " -I, --verify-input-size проверить размер входного файла с размером в mapfile\n "
102
+ " -J, --verify-on-error перечитать последний хороший сектор после каждой ошибки \n "
103
+ " -K, --skip-size=[<i>][,<max>] начальный, максимальный размер, чтобы пропустить ошибку чтения \n "
104
+ " -L, --loose-domain принять неполный файл карты домена \n "
105
+ " -m, --domain-mapfile=<file> ограничить домен до готовых блоков в <файле >\n "
106
+ " -M, --retrim отметьте все поврежденные блоки как необрезанные \n "
107
+ " -n, --no-scrape пропустить этап очистки \n "
108
+ " -N, --no-trim пропустить этап обрезки \n "
109
+ " -o, --output-position=<bytes> начальная позиция в выходном файле [ipos]\n "
110
+ " -O, --reopen-on-error повторно открыть входной файл после каждой ошибки чтения \n "
111
+ " -p, --preallocate prealocate space на диске для выходного файла \n "
112
+ " -P, --data-preview[=<lines>] показать некоторые строки последних прочитанных данных [3]\n "
113
+ " -q, --quiet подавлять все сообщения \n "
114
+ " -r, --retry-passes=<n> выйти после <n> повторных проходов (-1 = бесконечность ) [0]\n "
115
+ " -R, --reverse изменить направление всех проходов \n "
116
+ " -s, --size=<bytes> максимальный размер входных данных для копирования \n "
117
+ " -S, --sparse использовать разреженные записи для выходного файла \n "
118
+ " -t, --truncate обрезать выходной файл до нулевого размера \n "
119
+ " -T, --timeout=<interval> максимальное время с момента последнего успешного чтения \n "
120
+ " -u, --unidirectional запускать все проходы в одном направлении \n "
121
+ " -v, --verbose быть многословным (второй -v дает больше )\n "
122
+ " -w, --ignore-write-errors сделать режим заполнения игнорировать ошибки записи \n "
123
+ " -x, --extend-outfile=<bytes> расширьте размер файла, чтобы быть как минимум длинным \n "
124
+ " -X, --max-read-errors=<n> допустимо максимальное количество ошибок чтения \n "
125
+ " -y, --synchronous использовать синхронную запись для выходного файла \n "
126
+ " -Z, --max-read-rate=<bytes> максимальная скорость чтения в байтах/с \n "
127
+ " --ask запросить подтверждение перед началом копирования \n "
128
+ " --cpass=<n>[,<n>] выберите, какие копии будут выполняться для запуска \n "
129
+ " --delay-slow=<interval> начальная задержка перед проверкой медленного чтения [30]\n "
130
+ " --log-events=<file> регистрировать значительные события в <файле >\n "
131
+ " --log-rates=<file> скорости регистрации и размеры ошибок в <файле >\n "
132
+ " --log-reads=<file> записывать все операции чтения в <файл >\n "
133
+ " --mapfile-interval=[i][,i] сохранять / синхронизировать файл карты с заданным интервалом [авто ]\n "
134
+ " --max-slow-reads=<n> максимальное допустимое число медленных чтений \n "
135
+ " --pause-on-error=<interval> время ожидания после каждой ошибки чтения [0]\n "
136
+ " --pause-on-pass=<interval> время ожидания между проходами [0]\n "
137
+ " --reset-slow сброс медленного чтения, если скорость повышается выше min\n "
138
+ " --same-file разрешить infile и outfile быть одним и тем же файлом \n "
139
+ " Числа могут быть десятичными, шестнадцатеричными или восьмеричными, и за ними может следовать \n "
140
+ " умножитель : s = сектора , k = 1000, Ki = 1024, M = 10 ^ 6, Mi = 2 ^ 20 и т. д. \n "
141
+ " Временные интервалы имеют формат 1 [.5] [smhd] или 1/2 [smhd].\n "
142
+ " \n Статус выхода : 0 для нормального выхода , 1 для проблем с окружающей \n "
143
+ " средой (файл не найден, недопустимые флаги, ошибки ввода-вывода и т. Д.), \n "
144
+ " 2 для указания поврежденного или недопустимого входного файла, 3 для \n "
145
+ " внутренней ошибки согласованности (например, ошибка ), что вызвало панику. "
146
+ " \n Сообщить об ошибках в [email protected] \n "
147
+ " Домашняя страница Ddrescue : http://www.gnu.org/software/ddrescue/ddrescue.html\n "
148
+ " Общая справка с использованием программного обеспечения GNU : http://www.gnu.org/gethelp\n " );
149
149
}
150
150
151
- // Recognized formats : <rational_number>[unit]
152
- // Where the optional "unit" is one of 's', 'm', 'h' or 'd' .
153
- // Returns the number of seconds, or exits with 1 status if error .
151
+ // Признанные форматы : <rational_number> [unit]
152
+ // Если дополнительный «блок» является одним из «s», «m», «h» или «d», .
153
+ // Возвращает количество секунд или выходит с 1 статусом, если ошибка .
154
154
//
155
155
Rational parse_rational_time ( const char * const ptr,
156
156
const bool comma = false ,
0 commit comments