ディレクトリから複数のディレクトリにソースファイルをコピーし、ファイルをコピーした後にソースディレクトリからソースファイルを削除する自動スクリプトを知りたいです。
.xml ファイルが保存されているフォルダーが 1 つあります。そのため、最初のステップでは、このソース フォルダーから別の 2 つのフォルダー (フォルダー 1 とフォルダー 2) にこれらのファイルをコピーします。フォルダー 1 は、バックアップ目的のみでファイルを保持するためのもので、フォルダー 2 は、要件に応じて xml ファイルを分割するための別のスクリプトを実行するためのものです。ファイルをコピーした後、ソース フォルダーからファイルを削除します。
よろしく
答え1
次のbashスクリプトは、ソースディレクトリに新しいファイルが入ってくるかどうかを監視します(つまり、既存のファイルをコピーしたり削除したりすることはありません。) を 2 つの宛先ディレクトリにコピーし、その後削除します... ソースディレクトリで新しいファイルを受信する前に、スクリプトを実行して実行し続ける必要があります (つまり、スクリプトは既に実行されている場合にのみ、新しい受信ファイルをキャッチします。)...スクリプトではinotifywait
最初にインストールする必要があるのはsudo apt install inotify-tools
... スクリプト内のコメントを読んで、最初にパスを指定してください:
#!/bin/bash
# Specify the full path to the source directory in the line below (keep the last "/").
source_d="/full/path/to/directory/"
# Specify the fullpath to the first destination directory in the line below (keep the last "/").
destination_d1="/full/path/to/directory1/"
# Specify the full path to the second destination directory in the line below (keep the last "/").
destination_d2="/full/path/to/directory2/"
inotifywait -m -q -e close_write "$source_d" |
while read -r path action file; do
cp -- "$path$file" "$destination_d1$file"
cp -- "$path$file" "$destination_d2$file"
rm -- "$path$file"
done
答え2
cp
N-1 回使用し、最後にmv
N 回目に使用します。
cp [files] [folder1]
cp [files] [folder2]
...
cp [files] [folderN-1]
mv [files] [folderN]