Je veux être en mesure de aws S3 cp
avec un seuil de date, mais il ne possède pas de commutateur pour cette fonctionnalité. Donc, je voudrais écrire un script Bash pour cela. Appeler aws s3 ls
avec le commutateur --recursive
me donne une liste de répertoire avec la date et l'heure que je pense que je peux utiliser pour atteindre mon objectif. Voici un exemple de sortie:Script Bash Pour ajouter un seuil de date à la fonction `cp` de S3
2016-12-01 18:06:40 0 sftp/ 2016-12-01 20:35:39 1024 sftp/.ssh/.id_rsa.swp 2016-12-01 20:35:39 1679 sftp/.ssh/id_rsa 2016-12-01 20:35:39 405 sftp/.ssh/id_rsa.pub
Quel est le moyen le plus efficace pour itérer sur tous les fichiers, mais seulement copier les fichiers plus récents que la date indiquée?
Voici le script (incomplet) J'ai jusqu'à présent:
#!/bin/bash
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-m|--mtime)
MTIME="$2"
shift 2;;
-s|--source)
SRCDIR="$2"
shift 2;;
-d|--dest)
DSTDIR="$2"
shift 2;;
*)
#echo "Unknown argument: \"$key\""; exit 1;;
break;;
esac
done
if [ ! -d $DSTDIR ]; then
echo "the directory does not exist!";
exit 1;
fi
GTDATE="$(date "+%Y%m%d%H%M%S" -d "$MTIME days ago")"
#echo "Threshold: $GTDATE"
for f in $(aws s3 ls $SRCDIR --recursive | awk '{ ??? }'); do
#aws s3 cp
done
Y at-il un manque guillemets doubles dans 'filetime = $ (date -ud" $ {jour} T $ {temps}% s) '? – alphadogg
@alphadogg Oui, merci. – sorontar