同じコマンドでディレクトリをコピーして名前を変更するには?

同じコマンドでディレクトリをコピーして名前を変更するには?

現在、私はディレクトリの高速バックアップを作成するためにこれら2つのコマンドを実行しています。これら2つのコマンドを1つにまとめて、1つのコマンドに新しいディレクトリをコピーして名前を変更する方法はありますか?

#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

答え1

できなければならない

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

しかし、、ターゲットディレクトリがすでに存在する場合は、ソースパスの最後の部分をターゲットパスに追加して作成し、ツリーの残りの /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App部分をコピーします。

これを防ぐには、/tf/Custom_App/.ソースとして使用してください。もちろん、この場合、rm -r /tf/Custom_App_backups/Custom_App_2017-12-21コピー後に既存のファイルが残っていることを望まない場合は、最初にこれを行うことをお勧めします。

/some/dirとの違いは/some/dir/.しばらく前に議論されました。当時、CPは非常に奇妙に振る舞った。 (ドット)または..(ドット)はソースディレクトリです。

答え2

または、次のことができます。

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

これにより、ユーザー定義の場所を事前に指定できます。また、サフィックス「/.this」を使用してコンテンツのみをコピーし、コンテンツに含まれるフォルダ(この場合はフォルダ)を除外することもできますCustom_app

答え3

私は偶然に同じアドバイスを見つけるためにこのページを見つけました。私はUbuntu 20.04(Focal Fossa)システムでこのコマンドを試して、@ilkkachuが提供したのと同じ構文を使用しました。 dest /のようにdestフォルダに末尾のスラッシュを追加したことを除いてください。その結果、ソースフォルダとその兄弟フォルダがコピーされます。末尾のスラッシュなしで再試行すると、目的の結果が得られます。

したがって、後で参照できるようにdestフォルダに末尾のスラッシュを追加すると、ソース兄弟ファイルもコピーされます(少なくとも私の経験ではそうでした)。

答え4

ターゲットディレクトリを作成して簡単に続行できます。

mkdir Custom_App_2017-12-21
cd Custom_App_2017-12-21/
cp -R /tf/Custom_App/* .

最後のコマンドは、関連するすべてのファイルを新しく作成されたディレクトリにコピーします。

関連情報