目前我有两个目录 A/ 和 B/,除了时间戳之外,它们在各方面都相同。因此,如果我运行命令:
rsync --dry-run -crvv A/ B/
Run Code Online (Sandbox Code Playgroud)
然后所有文件都标记为“最新”,而命令:
rsync --dry-run -rvv A/ B/
Run Code Online (Sandbox Code Playgroud)
显示所有文件都将从 A/ 复制到 B/。
我的问题是:鉴于我知道文件是相同的(就内容而言),那么有没有办法(通过 rsync 或其他方式)将 B/ 中文件的时间戳设置为与中文件的时间戳相同A/,而不将所有文件从 A/ 复制到 B/ ?
谢谢
我认为我可以轻松检查特定文件的时间戳。然后我意识到当我看到像1991.
使用 robocopy 将文件复制到新驱动器后,我意识到所有文件和目录创建时间都已重置为复制时间。
是否有一些开关可以让 robocopy 保留原始文件的时间?
我正在尝试通过命令备份文件
scp /tmp/backup.tar.gz 主机名:/home/user/backup.tar.gz
当我运行它时,scp 进度条出现,看起来像是在传输文件,但是当我登录目标服务器检查文件时,时间戳和文件大小与旧版本相比没有改变,所以看起来像scp 根本没有覆盖旧文件。只有当我从目标服务器手动删除文件时,它才会起作用。
我正在运行 ubuntu,这发生在两台服务器上:一台 cygwin ssh,一台 fedora core 3。
任何人都知道为什么会这样?我以为 scp 只会覆盖现有文件..
谢谢
我有一个 TCP 服务器在运行 Ubuntu 12.04.3(内核 3.8.0-31-generic)的机器(“服务器”)上进行监听。它接收来自 2 台不同客户端机器的连接。机器 A 运行 Ubuntu 12.04.4 (3.11.0-17-generic),机器 B 运行 Ubuntu 11.10 (3.0.0-32-server)。
如果服务器上启用了 TCP 时间戳(sysctl net.ipv4.tcp_timestamps=1),那么有时来自机器 A 的 SYN 数据包会被“忽略”。在服务器上使用 tcpdump(在非混杂模式下)我可以看到 SYN 到达正常并且校验和正确 - 只是没有响应 - 没有 SYN/ACK 和 RST。机器 A 在放弃之前多次重传 SYN。在机器 A 上运行的客户端软件(在本例中为 wget)立即使用新连接重试并成功,获得即时 SYN/ACK。
机器 B 在同一台服务器上没有问题,它的流量看起来很正常 - 它也使用与机器 A 相同的 TCP 选项(从我从捕获文件中看到的)。在服务器上禁用 TCP 时间戳会使一切正常工作。
被忽略的 SYN 数据包中的时间戳对我来说似乎是有效的,所以我不确定它们为什么会导致问题,或者它们是否是根本原因。
我在这里放了一个匿名 pcap https://www.dropbox.com/s/onimdkbyx9lim70/server-machineA.pcap。它是在服务器 (10.76.0.74) 上拍摄的,显示机器 A (10.4.0.76) 成功执行 HTTP GET(数据包 1 到 10),然后 1 秒后尝试再次获取相同的 URL(数据包 11 到 17),但相反忽略其 SYN。数据包 18 到 …
我有一个多个用户可以访问的目录。他们更改、上传和删除目录中的文件。他们都属于同一个用户组。该目录中的文件具有 660 的访问权限。
问题是如果用户不是该文件的所有者,则用户无法设置文件的修改时间。
例如,用户 AAA 上传了一个文件“EXAMPLE.jpg”,用户 BBB 下载了它,修改了它并再次上传。文件的“上次修改”时间戳将是 BBB 上传它的时间,而不是真正上次修改的时间。我尝试将文件的权限设置为 777,但没有帮助。
问题在 sftp-logs 中显示为:
Dec 5 16:37:08 servername sftp-server[695]: open "/shared_directory/EXAMPLE.jpg" flags WRITE,CREATE,TRUNCATE mode 0666
Dec 5 16:37:08 servername sftp-server[695]: close "/shared_directory/EXAMPLE.jpg" bytes read 0 written 42765
Dec 5 16:37:08 servername sftp-server[695]: set "/shared_directory/EXAMPLE.jpg" modtime 20111205-15:53:31
Dec 5 16:37:08 servername sftp-server[695]: sent status Permission denied
Run Code Online (Sandbox Code Playgroud)
Winscp 会抱怨这种情况Upload of file 'example.jpg' was successful, but error occurred while setting the permissions and/or timestamp. If the problem persists, turn on 'ignore …
不得不在两台服务器之间移动几个非常大的文件 (VHD),我在远程桌面会话中使用 Windows 资源管理器启动了文件复制操作,然后在不注销的情况下关闭了会话,让文件复制继续工作;第二天,我重新登录,文件复制似乎已经完成……但是文件上的所有时间戳(创建、上次访问、上次修改)都是指我启动副本的时间,我肯定知道复制操作需要几个小时。
我本来希望至少“上次访问”或“上次修改”时间戳是指文件复制操作结束的实际时间,但看起来这不是它的工作方式。
我如何检查(如果可以的话)复制是否成功完成,以及何时完成?
文件大小不是一个指标,因为即使复制操作被中断,文件也总是被分配完整的大小。
我在某些(硬件)服务器中看到了一种奇怪的系统时间更改行为:在 /var/logs/syslog 中,每条日志消息之前的日期时间有时会更改为随机时间并在下一条消息中恢复正常,如下所示:
2018 年 2 月 22 日 09:09:30 ... 2018 年 2 月 22 日 09:09:32 ... 2610 年 1 月 13 日 15:37:42 ... 2018 年 2 月 22 日 09:09:33 ... 2018 年 2 月 22 日 09:09:34 ...
如示例中所示,日期时间的突然变化可能长达数百年。
我可以确认具有奇怪时间戳的日志消息不是来自任何特定进程 - 它可能对每个进程随机发生。
并且两次异常时间更改之间的持续时间从几分钟到几小时不等(但是,我怀疑异常时间更改可能会更频繁地发生,但其中许多未在系统日志中显示,因为它不是每秒写入日志)。
此外,由于它发生在不止一台服务器上,我认为这不是硬件问题。
关于服务器的更多信息:它们是一个带有一个控制器和几个计算节点的 openstack 安装。每个服务器都有运行的 ntp 服务。控制器配置为从其自己的硬件时钟中获取时间,并且计算节点服务器从控制器同步时间。请注意,每个服务器都有自己的异常时间变化 - 看起来“错误的时间”不是从控制器通过 ntp 同步的。
我怀疑计算节点上的来宾系统(虚拟机)可能会影响它们的主机系统时间。但这并不能解释为什么控制器在没有运行任何虚拟机的情况下会出现同样的问题。
我需要一种方法来检测:谁更改了系统时间以及它是如何发生的?
我在使用 Total Commander 复制的文件上丢失时间戳(创建日期)时遇到问题 - 仅保留修改日期。它有数十万个文件和几 TB的数据,所以我不想再次复制它们。
我设法使用 robocopy 仅更新文件夹时间戳 - 效果很好:
robocopy /e /dcopy:t c:\source d:\destination
Run Code Online (Sandbox Code Playgroud)
但所有文件时间戳都被修改为复制时间。
我尝试了一些选项,例如:
robocopy /e /copy:t c:\source d:\destination
robocopy /e /copyall c:\source d:\destination
Run Code Online (Sandbox Code Playgroud)
但这没有帮助。
它可以完成这项工作,但仅当目标 为空时:
robocopy /e /copyall /dcopy:t c:\source d:\destination
Run Code Online (Sandbox Code Playgroud)
它也可以完成这项工作,但仅在 Windows 7 上(在 Windows 10 上不起作用),并且它会再次复制所有文件,这不是我想要的:
robocopy /e /copyall /is c:\source d:\destination
Run Code Online (Sandbox Code Playgroud)
有人知道如何仅更新文件的时间戳而不再次复制数据本身吗?它可以是任何应用程序/方法,但如果可能的话,我更喜欢免费的应用程序/方法。我需要重新创建整个子目录结构、隐藏文件和符号链接 - 完整镜像。:)
谢谢。
我的传统是在修改时将所有区域序列设置为时间戳。现在 Puppet 是我的新信仰,我想在从导出的资源构建区域文件时设置串行时间戳。一个有点琐碎的例子可能如下所示:
file { "/tmp/dafile": content = inline_template("<%= Time.now.to_i %>"), }
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于内容将一直不同,这将(最终)在每个 puppet 配置轮询中引发区域文件的重建。
有什么方法可以插入时间戳而不将其包含在与先前状态进行比较的数据中?