пользовательский формат даты / времени для --out-format в rsync - PullRequest
0 голосов
/ 20 января 2019

Согласно страницам man , %t используется для вывода текущей даты и времени с помощью --out-format. Есть ли способ указать формат для даты / времени?

$ rsync --out-format="%t" "/source" "/destination"
2019/01/19 23:12:57 | home/nacho/backup_test/source 1
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/001
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/002
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/003
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/100
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/file 100
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/folder
2019/01/19 23:12:57 | home/nacho/backup_test/source 1/folder/004
2019/01/19 23:12:57 | home/nacho/backup_test/source 2
2019/01/19 23:12:57 | home/nacho/backup_test/source 2/006

1 Ответ

0 голосов
/ 20 января 2019

Похоже, нет, нет. Глядя на исходный код rsync, экранирование формата %t приводит к вызову следующей функции timestring, которая, как вы можете видеть, вызывает strftime() с жестко заданным форматом. строка "%Y/%m/%d %H:%M:%S":

char *timestring(time_t t)
{
        static char TimeBuf[200];
        struct tm *tm = localtime(&t);
        char *p;

#ifdef HAVE_STRFTIME
        strftime(TimeBuf, sizeof TimeBuf - 1, "%Y/%m/%d %H:%M:%S", tm);
#else
        strlcpy(TimeBuf, asctime(tm), sizeof TimeBuf);
#endif

        if ((p = strchr(TimeBuf, '\n')) != NULL)
                *p = '\0';

        return TimeBuf;
}
...