Команда «date -d» не работает в контейнере Docker Alpine Linux

Я думаю, вы идете неправильным путем.

Почему вы пытаетесь восстановить эти файлы? Переустановите ОС из CMD + R и войдите снова. Теперь вы можете создавать резервные копии всех своих документов. При переустановке не удаляются ваши файлы, пока вы не отформатируете диск / ы. кстати. вы можете войти в iCloud через www.icloud.com и получить оттуда файлы.

Другим решением может быть: Загрузите последнее комбо-обновление для установленной вами ОС (например, https://support.apple.com/kb/DL1832?locale=de_DE ) и переведите поврежденную ОС в режим целевого диска, удерживая клавишу "T" при запуске. Теперь подключите поврежденную ОС через Firewire или Thunderbolt (или даже с помощью конвертера / адаптера FW в TB) и запустите рабочий Yosemite устанавливает установщик Combo Update. Выберите в качестве места назначения поврежденную ОС из режима целевого диска. Во многих случаях Combo Update может исправить некоторые проблемы без необходимости переустанавливать всю ОС. {{1 }} Но это только временное решение. Проблема должна быть решена.

Между прочим. Я не понимаю, почему вы пытаетесь восстановить файлы с диска, когда файлы уже находятся в iCloud? Каковы ваши намерения? Может быть, мы могли бы помочь вам лучше, если бы знали, в чем заключается интенсификация?

С уважением

9
03.06.2019, 17:12
3 ответа

busyboxdateподдерживает параметр -D, который (похож на zshstrftime, но в отличие от GNUdate)дает вам интерфейс к strptime(), где вы можете анализировать даты (, хотя и не относительные даты )в любом формате (ast -open dateи ksh93printfтакже имеют способы настройки формата ввода ).

Там, где busyboxпостроен на реализации библиотеки C, strptime()и strftime()которой поддерживают нестандартный флаг %s-, вы можете сделать:

date -D %s -d "$(($(date +%s) - 86400))"

Однако в библиотеке musl C, которую использует alpine Linux,strftime()поддерживает %s, а strptime()— нет. Это нормально, так как busybox date, как и GNU date, поддерживает спецификацию даты @epochtime, так что вы можете сделать:

date -d "@$(($(date +%s) - 86400))"

Что даст вам дату 86400 секунд назад, без двусмысленности GNU dateyesterday(это 86400 назад или это вчера в то же время дня? Что, если вчера такого времени суток не было, потому что часы перешли на летнее время? ).

Этот синтаксис также должен работать с GNU date.

С ast -opendate(или ksh93printf '%(%c)T')вы должны использовать:

date -d "#$(($(date +%s) - 86400))"

вместо этого.

Обратите внимание: если вы хотите сообщить время UTC (Zulu ), вы должны использовать TZ=UTC0 dateили date -u, иначе вы получите время в часовом поясе системы/пользователя.

6
27.01.2020, 20:04

РЕДАКТИРОВАТЬ :Я протестировал эту команду на Alpine :3.2

Чтобы вычесть 24 часа из текущего дня, вы можете запустить:

# date
Fri Jul 10 13:08:56 UTC 2020

# date -d "-24:00:00"
Thu Jul  9 00:00:00 UTC 2020

Вы также можете добавить текущую дату, используя:

# date -d "+24:00:00"
Sat Jul 11 00:00:00 UTC 2020

Надеюсь, это поможет

4
10.07.2020, 13:12

Если вам нужно преобразование часового пояса, coreutilsнедостаточно.
Вам также понадобится tzdata.

Команды типа TZ='America/Los_Angeles' dateне будут работать, TZvar просто игнорируется.
После apk add tzdataпреобразование часового пояса начинает работать правильно.

0
26.01.2021, 02:51

Теги

Похожие вопросы