Solaris

如何在不支持 -u 選項的 Solaris 系統上使用 cp -u?

  • November 25, 2018

我只想在源文件比目標文件新或目標文件失去時複製。如您所知,此功能將在 Linux 系統上通過以下命令執行。

cp -u /source/*.txt /destination/  

但是當我在solaris系統10上使用這個命令時。下面是我的輸出:

cp: illegal option -- u
Usage: cp [-f] [-i] [-p] [-@] f1 f2
cp [-f] [-i] [-p] [-@] f1 ... fn d1
cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn 

有什麼解決辦法嗎?

您可以使用rsync -uwhich 提供相同的功能。它在目前的 Solaris 發行版 (11.x) 和最新的 Solaris 10 版本 ( Oracle Solaris 10 1/13 ) 中可用。

Solaris 10 的原始碼包含在可從此處下載的完整開原始碼包中(請注意,它是一個 1 GB 的文件)。

cp -u是 GNU coreutils 的一個特性,它是非嵌入式 Linux 上的標準,但不是 Solaris。

在 Solaris 或任何其他 POSIX 兼容系統¹上,您可以使用pax具有類似功能的 。該命令是 POSIX 對歷史和命令pax的替代;在直通模式下,它類似於. 該選項類似於 GNU的選項(它們都從歷史存檔器中獲取它,例如和)。cpio``tar``cp -R``-u``cp``tar``ar

cd /source
pax -rw -u *.txt /destination

(不是pax -rw -u /source/*.txt /destination,因為那會創建/destination/source/file.txt

¹請注意,許多 Linux 發行版在預設安裝中忽略了 pax。但是,它始終作為一個包提供。

引用自:https://unix.stackexchange.com/questions/257957