-uオプションをサポートしていないSolarisシステムでcp -uをどのように使用しますか?

-uオプションをサポートしていないSolarisシステムでcp -uをどのように使用しますか?

ソースファイルがターゲットファイルより最新の場合、またはターゲットファイルが見つからない場合にのみコピーしたいと思います。ご存知のように、この機能は次のコマンドを使用して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 

解決策はありますか?

答え1

cp -u非組み込みLinuxでは標準ですが、Solarisでは標準ではないGNU coreutilsの機能です。

Solaris またはその他の POSIX 互換システムでは、次のものを使用できます。pax、同様の機能があります。このコマンドはpaxPOSIX Historyコマンドに代わるもので、パススルーモードと似ています。オプションはGNUのオプションと似ています(両方と同じ履歴アーカイバから取得されます)。cpiotarcp -R-ucptarar

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

(いやpax -rw -u /source/*.txt /destination、それでは生成されるから/destination/source/file.txtです)

1多くのLinuxディストリビューションは、基本インストールからpaxを省略しますただし、常にパッケージとして提供されます。

答え2

rsync -uこれを使用して同じ機能を提供できます。これは、現在のSolarisリリース(11.x)と最新のSolaris 10リリース(Oracle Solaris 10 1/13)。

Solaris 10のソースコードはオープンソースパッケージ全体に含まれており、以下からダウンロードできます。ここ(参考として1GBファイルです。)

答え3

かなり古いバージョンのSolarisを使用しています。とにかく他の人が指摘したように、-uこのオプションはGNUで「発明」されているので、GNUバージョンを使用する必要がありますcpGNUコアツール次に、gcpコマンドラインで明示的に引用します。あなたの例は

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

設置方法を確認できますここしかし、システム管理者が仕事をしているなら、すでにそこにいるでしょう(これは私の個人的な意見です:-))

関連情報