Linux下 ftp命令 文件时间戳会变吗

Linux下 ftp命令 文件时间戳会变吗,第1张

问题现象:

ftp到一台linux系统中,查看一个文件下的文件清单,发现和文件的实际创建时间(以root用户登录查看的时间)不一致,大约相差8个小时左右。

问题处理方法:

Linux 下的时区是通过建立从/etc/localtime 到 /usr/share/zoneinfo 目录下与您所在时区相符的文件的符号链结实现的。例如,由于我在中国的北京,/etc/localtime就是到/usr/share/zoneinfo/Asia/Shanghai的符号链结。要建立这个链结,运行:

ln -sf /usr/share/zoneinfo/yourzone /etc/localtime

替换yourzone 为形如Asia的文件。看看/usr/share/zoneinfo目录都有什么时区。

我这里运行的是:

ln -sf /usr/share/zoneinfo/Asia /etc/localtime

这里假设/usr/share/zoneinfo 是到/etc/localtime 的链结的前提是Redhat Linux

在旧版本的系统里,您会发现使用/usr/lib/zoneinfo而不是/usr/share/zoneinfo。参考后面“一些应用程序中时间错误”。

#!/bin/bash

#设置日志文件,前提建好了/backup/log目录

LogFile=/backup/log/`date +"%Y-%m"`.log

#备份源目录

SourceDir=/cvs

#备份目标

BakDir=/backup

#保存20天过期自动删除

RetainDay=20

#备份的内容可以写进project.lst,如cvs目录下有a,b,c三个目录,project.lst填写多少就备份多少,下面是备份的

#具体脚本,其核心是tar打包,并把重要的内容记录到日志文件里

ProjectLst=/backup/project.lst

##################################################

DATE=`date +"%Y-%m-%d"`

echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile

echo "--------------------------------------------------" >>$LogFile

cd $BakDir

PROJECTLIST=`cat $ProjectLst`

for Project in $PROJECTLIST

do

ProjectData=$SourceDir/$Project

DestDir=$BakDir/$Project

PackFile=$DATE.$Project.tgz

if [ -f $BakDir/$PackFile ]

then

echo "backup file have exist !" >>$LogFile

else

cp -RHpf $ProjectData $DestDir >/dev/null

tar -zcvf $PackFile $Project >/dev/null

echo "backup $Project done into $PackFile" >>$LogFile

rm -rf $Project

fi

done

echo "--------------------------------------------------" >>$LogFile

echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile

echo " " >>$LogFile

##################################################

#下面的内容就是把刚才备份的内容传到服务器上,前提是你有一个可以访问到底FTP服务器

#put backup to ftp server

HOST=192.168.110.111

FTP_USERNAME=ftpuser

FTP_PASSWORD=123456

cd $BakDir

echo "start open ftp serverat $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile

echo "--------------------------------------------------" >>$LogFile

/usr/bin/ftp -in <open $HOST

user $FTP_USERNAME $FTP_PASSWORD

put $DATE.$Project.tgz

bye

EOF

echo "put ftp end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile

#最后上传完毕后再查看本地备份大于20天的自动删除,这样就可以实现本地异地双备份

find $Bakdir -type f -mtime +$RetainDay -name "*.$Project.tgz" -exec rm {} \>/dev/null

exit 0

#最后我们还可用crontab做个周期性计划,比如每周一次全备份

#59 23 * * 6 /home/backup.sh

ftp_get

仅是下载,如果本地有内容你不想覆盖的话那就按照时间戳变更下载后的文件名,如果要对文件进行操作

PHP写入文件需要:打开文件fopen()、写入数据fwrite()和关闭文件

fclose()

$fp=fopen("../cnbruce.txt",'w')

r

只读——读模式,打开文件,从文件头开始读

r+

可读可写方式打开文件,从文件头开始读写

w

只写——写方式打开文件,同时把该文件内容清空,把文件指针指向文件开始处。如果该文件已经存在,将删除文件已有内容;如果该文件不存在,则建立该文件

w+

可读可写方式打开文件,同时把该文件内容清空,把文件指针指向文件开始处。如果该文件不存在,则建立该文件

a

追加

以只写方式打开文件,把文件指针指向文件末尾处。如果该文件不存在,则建立该文件

a+

追加

以可读可写方式打开文件,把文件指针指向文件末尾处。如果该文件不存在,则建立该文件

b

二进制

用于于其他模式进行连接。建议使用该选项,以获得更大程度的可移植性

注意,如果fopen()函数调用失败,函数将返回false。否则返回指针数据。所以一般在打开了文件后\读写文件前需要检测下文件是否存在。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/53223.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-25
下一篇2023-02-25

发表评论

登录后才能评论

评论列表(0条)

    保存