Просто включите HTTPS и mod_alias
в Apache, и добавляют правило перенаправления как следующее:
<VirtualHost *:80>
.
.
.
Redirect permanent / https://yoursite.com/
</VirtualHost>
Конфигурация по умолчанию варьируется между Ose/дистрибутивами, таким образом, я не могу быть более конкретным, чем это. Лучше указать Вашу ОС и версии программного обеспечения по вопросам, таким образом, можно получить лучшие ответы ;-).
stat -c '%w' file
в файловых системах то время создания хранилища.
Обратите внимание, что на Linux это требует coreutils
8.31, glibc
2.28 и версия 4.11 ядра или более новый.
Стандарт POSIX только определяет три отличных метки времени, которые будут сохранены для каждого файла: время последнего доступа к данным, время последней модификации данных, и время состояние файла, в последний раз измененное.
Современные файловые системы Linux, такие как ext4, Btrfs и JFS, действительно хранят время создания файла (иначе время рождения), но используют различные названия рассматриваемого поля (crtime
в ext4, otime
в Btrfs и JFS). Linux обеспечивает statx (2) интерфейс системного вызова для получения времени рождения файла для файловых систем, которые поддерживают его начиная с версии 4.11 ядра.
Поскольку Craig Sanders и Mohsen Pahlevanzadeh указали, stat
действительно поддерживает %w
и %W
спецификаторы формата для отображения времени рождения файла (в человекочитаемом формате и в секундах с Эпохи соответственно) до coreutils
версия 8.31. Однако coreutils
stat
использование statx()
системный вызов где это возможно для получения времени рождения только начиная с версии 8.31. До coreutils
версия 8.31 stat
полученный доступ время рождения через get_stat_birthtime()
если gnulib (в lib/stat-time.h
), который получает время рождения от st_birthtime
и st_birthtimensec
поля stat
структура, возвращенная stat()
системный вызов. В то время как, например, системы BSD (и в дополнительном OS X) обеспечивают st_birthtime
через stat
, Linux не делает. Это то, почему stat -c '%w' file
выводы -
(указывание неизвестного времени создания) на Linux до coreutils
8.31 даже для файловых систем, которые действительно хранят время создания внутренне.
Как Stephane Chazelas указывает, некоторые файловые системы, такие как ntfs-3g, выставляют времена создания файла через расширенные атрибуты файла.
TLDR; использовать stap
("SystemTap") для создания собственного ядра API. Демонстрация ext4 извлечения времени создания ниже.
Можно извлечь ext4 времена создания на Fedora 19 систем. Здесь является моим:
$ uname -a
Linux steelers.net 3.11.1-200.fc19.i686.PAE #1 SMP Sat Sep 14 15:20:42 UTC 2013 i686 i686 i386 GNU/Linux
Ясно, что inodes на моих ext4 разделах имеют время создания. Вот сценарий оболочки, который определяет inode, связанный с именем файла, и затем увеличивается stat
вывод со временем создания при помощи stap
("systemtap").
NB: Это - просто демонстрация и чрезвычайно неэффективный начиная с модуля ядра, создан, загружен и разгружен для каждого выполнения. Это также, вероятно, очень хрупко, поскольку никакая проверка ошибок не выполняется. Надлежащий API ядра был бы предпочтителен, но этот сценарий мог быть сделан намного более эффективным и читать времена создания нескольких files/inodes.
[содержание stap_stat.sh]
#/bin/sh
my_inode_str=$(stat --printf="%i" $1)
stap - << end_of_stap_script
global my_offsetof
probe begin {
system("stat $1");
my_offsetof = &@cast(0,"struct ext4_inode_info")->vfs_inode;
}
probe kernel.function("ext4_getattr@fs/ext4/inode.c") {
probe_inode=\$dentry->d_inode;
if (@cast(probe_inode, "struct inode")->i_ino == $my_inode_str) {
my_i_crtime = &@cast(probe_inode - my_offsetof,"struct ext4_inode_info")->i_crtime;
printf("CrTime: %s GMT\n", ctime(@cast(my_i_crtime, "timespec")->tv_sec));
printf("CrTime (nsecs): %d\n", @cast(my_i_crtime, "timespec")->tv_nsec);
exit();
}
}
end_of_stap_script
Вот демонстрация:
$ ll testfile
ls: cannot access testfile: No such file or directory
$ touch testfile
$ ./stap_stat.sh testfile
File: ‘testfile’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd02h/64770d Inode: 4850501 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1001/ Rick) Gid: ( 1001/ Rick)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2013-09-28 06:17:04.221441084 -0400
Modify: 2013-09-28 06:17:04.221441084 -0400
Change: 2013-09-28 06:17:04.221441084 -0400
Birth: -
CrTime: Sat Sep 28 10:17:04 2013 GMT
CrTime (nsecs): 220441085
$ ll testfile
-rw-rw-r--. 1 Rick Rick 0 Sep 28 06:17 testfile
$ cat - >> testfile
Now is the time ...
$ ll testfile
-rw-rw-r--. 1 Rick Rick 20 Sep 28 06:18 testfile
$ ./stap_stat.sh testfile
File: ‘testfile’
Device: fd02h/64770d Inode: 4850501 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1001/ Rick) Gid: ( 1001/ Rick)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2013-09-28 06:17:04.221441084 -0400
Modify: 2013-09-28 06:18:33.684374740 -0400
Change: 2013-09-28 06:18:33.684374740 -0400
Birth: -
CrTime: Sat Sep 28 10:17:04 2013 GMT
CrTime (nsecs): 220441085
$ cat testfile
Now is the time ...
$ ./stap_stat.sh testfile
File: ‘testfile’
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 4850501 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1001/ Rick) Gid: ( 1001/ Rick)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2013-09-28 06:19:12.199349463 -0400
Modify: 2013-09-28 06:18:33.684374740 -0400
Change: 2013-09-28 06:18:33.684374740 -0400
Birth: -
CrTime: Sat Sep 28 10:17:04 2013 GMT
CrTime (nsecs): 220441085
$ mv testfile testfile2
$ ./stap_stat.sh testfile2
File: ‘testfile2’
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: fd02h/64770d Inode: 4850501 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1001/ Rick) Gid: ( 1001/ Rick)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2013-09-28 06:19:12.199349463 -0400
Modify: 2013-09-28 06:18:33.684374740 -0400
Change: 2013-09-28 06:20:45.870295668 -0400
Birth: -
CrTime: Sat Sep 28 10:17:04 2013 GMT
CrTime (nsecs): 220441085
$
debugfs + stat
позвольте добираться crtime
без обезьяны, исправляющей ядро.
– jfs
26.07.2016, 16:41
В теории со статистикой GNU Вы могли использовать stat -c '%w'
или %W
получить дату создания файла (иначе birthtime).
На практике большинство файловых систем не записывает ту информацию, и ядро Linux не обеспечивает способа получить доступ к ней.
Самым близким, который можно получить, является ctime файла, который не является временем создания, это - время, когда метаданные файла были в последний раз изменены.
Linux Weekly News имела интересную статью об этом несколько лет назад - http://lwn.net/Articles/397442/
stat --printf='%w' yourfile #human readable
stat --printf='%W' yourfile #seconds from Epoch , 0 if unknown
Различие между FreeBSD
и GNU\Linux
на stat command
:
Если Вы звоните stat
команда в GNU\Linux
это вызывает -x
опция, но в FreeBSD, сами необходимо вызвать -x
опция.
См. также, Какие файловые системы на Linux хранят время создания?
Примечания: --printf
очень полезно в scripting
....!
В ext4
это возможно; потому что файловая система ext4
хранит время создания файла. Но все же вы обнаружите, что команда stat
не может показать дату, потому что я думаю, что ядро не имеет для этого никаких API.
В любом случае, время рождения файла хранится в ext4
, и вы можете узнать его, хотя и не прямым методом, а с помощью debugfs
sudo debugfs -R "stat / АБСОЛЮТ / ПУТЬ "/ dev / sdxX | grep crtime
Посмотрите это:
# the last arg is the device to scan in.
debugfs -R 'stat /home/renich/somefile' /dev/sda1
BTW, это работает только на ext4. Я не нашел решения для BtrFS... пока ;)
Я использую Ubuntu, и большинство файлов находятся в файловой системе ext4, поэтому мы можем игнорировать случаи в других, таких как Btrfs, XFS (v5 и более поздних )и JFS.
Стандартная файловая система ext4 Linux выделяет место для временной метки создания файла -в своих внутренних структурах файловой системы, но этоеще не реализованоеще (Я пробовал в Ubuntu 20.04)
Используйте это как альтернативу :
stat --format='%z' {{YOUR_file}}
%z :время последнего изменения состояния , человек -может прочитать. (он же ctime)
ctime:Измененные метки времени не относятся к изменениям, внесенным в содержимое файла. Скорее, это время, когда метаданные , относящиеся к файлу, были изменены. Изменения прав доступа к файлам, например, обновят измененную временную метку.
atime против ctime против. время:
https://www.howtogeek.com/517098/linux-file-timestamps-explained-atime-mtime-and-ctime/
подробнее о метадате файла:
https://www.cs.columbia.edu/~smb/classes/s06-4118/l21.pdf
stap
создать Ваше собственное ядро API. Посмотрите пример в ответе здесь. – rickhg12hs 15.10.2013, 16:12